第一次接觸瀏覽器的緩存,原本不知道這個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