第一次接触浏览器的缓存,原本不知道这个localstorage,一直觉得只有session 和cookie,哈哈,学渣不要在乎。json
localstorage我的感觉和字典类相似数组
结合本身项目的使用状况浏览器
//获取保存在localStorage的数据
var RootData = localStorage.getItem("Articles") == null ? "" : localStorage.getItem("Articles");
//判断RootData是否存在值
if (RootData.length > 0) {
//对保存在localStorage中的数据进行json序列化
RootData = JSON.parse(RootData);
//对数组进行循环判断localStorage中是否存在产品值
for (var i = 0; i < RootData.length; i++) {
//判断localstorage中是否存在值
if (RootData[i].ArticlesID.indexOf(ArticlesID) != -1) {
//判断在该推荐中产品是否存在该参观者,不存在加入到缓存中
if (RootData[i].VisitorID.indexOf(VisitorID) == -1) {
var l_Root = new Object();
l_Root["ArticlesID"] = ArticlesID;
l_Root["VisitorID"] = RootData[i].VisitorID + "," + VisitorID;
RootData[i] = l_Root
localStorage.setItem("Articles", "" + JSON.stringify(RootData) + "");
break;
}
}
//判断是否存在该推荐产品,若是不存在,则产品和参观者一块儿加入到缓存中
else if (RootData[i].ArticlesID.indexOf(ArticlesID) == -1 && i == RootData.length - 1) {
var l_Root = new Object();
l_Root["ArticlesID"] = ArticlesID;
l_Root["VisitorID"] = VisitorID;
RootData.push(l_Root)
localStorage.setItem("Articles", "" + JSON.stringify(RootData) + "");
}
}
}
//缓存没有数据,新建加入缓存数据
else {
var myarry = new Array();
var l_Root = new Object();
l_Root["ArticlesID"] = ArticlesID;
l_Root["VisitorID"] = VisitorID;
myarry.push(l_Root)
localStorage.setItem("Articles", "" + JSON.stringify(myarry) + "");
}
}
//若是没有收藏,或者收藏取消
else {
//移除样式
obj.find('.baoming').remove();
//获取缓存
var RootData = localStorage.getItem("Articles") == null ? "" : localStorage.getItem("Articles");
if (RootData.length > 0) {
RootData = JSON.parse(RootData);
for (var i = 0; i < RootData.length; i++) {
if (RootData[i].ArticlesID.indexOf(ArticlesID) != -1) {
//该产品下的参观收藏着为一个
if (RootData[i].VisitorID.indexOf(VisitorID) > -1 && RootData[i].VisitorID.indexOf(",") == -1) {
RootData.pop();
if (RootData.length > 0) {//去除最后一个元素,若是还存在数据,插入缓存
localStorage.setItem("Articles", "" + JSON.stringify(RootData) + "");
break;
}
else {//删除最后一个元素以后,数组值为空,删除该缓存
localStorage.removeItem('Articles');
}
}
//删除该产品下的参观者大于1个
else if (RootData[i].VisitorID.indexOf(VisitorID) > -1 && RootData[i].VisitorID.indexOf(",") != -1) {
var l_Root = new Object();
l_Root["ArticlesID"] = ArticlesID;
var ID = VisitorID;
if (((RootData[i].VisitorID.indexOf(VisitorID)) == RootData[i].VisitorID.indexOf(VisitorID + ","))) {
ID += ",";//若是该参观者不在最后一位,加逗号删除
}
else {
//若是参观者在最后一位,在参观者前加逗号删除
ID = "," + ID;
}
l_Root["VisitorID"] = RootData[i].VisitorID.replace(ID, "");//去除字符串中存在的
RootData[i] = l_Root
localStorage.setItem("Articles", "" + JSON.stringify(RootData) + "");
break;
}
}
}
}
}
}缓存
对于获取数据的一部分使用。若发现其中的问题,请各位大牛不吝请教。。。。。cookie
对于localstorage的使用,感受还不错,就是在拼凑字符串和删除的时候须要考虑点问题。session
可能使用方法不正确,可是确实解决了我项目中的问题。。。(*^▽^*)嘿嘿localstorage