zoukankan      html  css  js  c++  java
  • 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的使用,感觉还不错,就是在拼凑字符串和删除的时候需要考虑点问题。

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

  • 相关阅读:
    BootStrap的table技术小结:数据填充、分页、列宽可拖动
    sql优化
    myBatis---接口代理开发(demo)
    hibernate---级联保存、级联删除
    ORA-02275: 此表中已经存在这样的引用约束条件
    eclipse运行无错的ssm项目,迁移到idea出错
    node.js跨域
    ssm项目导入activiti依赖后jsp页面el表达式报错
    js页面加载完成事件
    java调用python脚本
  • 原文地址:https://www.cnblogs.com/CnnBlog/p/8884176.html
Copyright © 2011-2022 走看看