store 存取数据数组对象_localStorage存储数组或者对象的问题总结

  • Post author:
  • Post category:其他


在做  保存选中的复选框记录(跳转到下个页面返回时希望原先选中的东西还在)时, 用到了localStorage存储数据。

由于复选框的内容有点多,就在localStorage中存入了对象(因为考虑到复选框有可能会多选,长度不一定,没有用二维数组)。

//首先先声明了存储复选框的对象checkarr

var checkarr={};//将数据存入checkarr中

functionstoreCheckarr(checkname){//每列复选框都是一条数组:checkname:[]

checkarr[checkname]=[];

$(“input[name='”+checkname+”‘]:checked”).each(function(i){

checkarr[checkname][i]=$(this).val();

});

}//当点击按钮的时候存储数据checkarr到localStorage中

$(“.btn-click”).click(function(){//”xxx”为checkbox中每项的name

storeCheckarr(“xxx”);

storeCheckarr(“xxx”);

storeCheckarr(“xxx”);

……/*这里是为了防止多次存储的时候,历史的数据对新的数据产生影响,所

以要移除*/localStorage.removeItem(“checkarr”);//JSON.stringify(checkarr)是必须要有的,惨痛的经历告诉我

localStorage.setItem(“checkarr”,JSON.stringify(checkarr));

});

读取数据,并且恢复原先选中的状态

//storeflag是返回的时候,页面传来的标识storeflag=1说明此时是返回

if(storeflag==1){/*同理读取的时候也要转化,我当时愣是没写这个,一直取不出来数据或者取出来的数据很怪异*/checkarr=JSON.parse(localStorage.getItem(“checkarr”));

$.each(checkarr[“xxx”],function(i,element){

$(“input[name=’xxx’][value=”+element+”]”).attr(“checked”,true);//这儿的内容可以根据自己的需求写

……

});

}/*我把这段代码放在$(document).ready中,就是希望页面加载的时候,就能显示出来*/

在别的博客上看到localstorage中只能存储字符串,所以存储和取出时要用到JSON.stringify()和JSON.parse();

如果存取的是单个数据,就没有那么麻烦

var xxx=”xxx”;

localStorage.setItem(“xxx”,xxx);

xxx=localStorage.getItem(“xxx”);

总结:(来自别的博客:http://blog.csdn.net/liuyan19891230/article/details/52638408)

本地存储外,除了localStorage,还有sessionStorage.

(1)localStorage和sessionStorage都是用来存储客户端临时信息的对象。

(2)localStorage和sessionStorage都只能存储字符串类型的对象

(3)localStorage生命周期是永久,除非用户手动清除localStorage信息,否则这些信息将永远存在。

(4)sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么通过sessionStorage中存储的数据也就被清空了。

(5)不同浏览器无法共享localStorage或sessionStorage中的信息。相同浏览器的不同页面间可以共享相同的localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。



版权声明:本文为weixin_30181187原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。