• localstorage使用心得。


    第一次接触浏览器的缓存,本来不知道这个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的使用,感觉还不错,就是在拼凑字符串和删除的时候需要考虑点问题。

    可能使用方法不正确,但是确实解决了我项目中的问题。。。(*^▽^*)嘿嘿

  • 相关阅读:
    屏蔽浏览器的脚本错误提示
    服务器定时重启计划任务
    卖程序的小女孩(转)
    会话状态已创建一个会话 ID,但由于响应已被应用程序刷新而无法保存它。
    Sesion空框架跳到登陆js
    poj 1679 The Unique MST (次小生成树 模版)
    hdu 3488 Tour (km 二分图 最小权)
    sdut 2401 最大矩形面积
    poj 3422 Kaka's Matrix Travels (最大费用流(最小费用最大流)+++拆点)
    博弈论 简介
  • 原文地址:https://www.cnblogs.com/CnnBlog/p/8884176.html
Copyright © 2020-2023  润新知