第一次接触浏览器的缓存,本来不知道这个localstorage,一直以为只有session 和cookie,哈哈,学渣不要在意。
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;
}
}
}
}
}
}
对于获取数据的一部分使用。若发现其中的问题,请各位大牛不吝请教。。。。。
对于localstorage的使用,感觉还不错,就是在拼凑字符串和删除的时候需要考虑点问题。
可能使用方法不正确,但是确实解决了我项目中的问题。。。(*^▽^*)嘿嘿