每次单击按钮,将数组存储到localStorage

时间:2013-11-21 15:35:37

标签: jquery local-storage

当我点击按钮到lolalStorage时,我想保存每个ID。

 $("li").on("click", "a", function(){
     var test = {"id":  id, "name":name}; 
     localStorage.setItem("test", JSON.stringify(test));
 });

但是在页面重新加载时,我只能得到一个id。

3 个答案:

答案 0 :(得分:4)

您在每次点击时都会覆盖相同的项目,因此您只存储最后一个项目。 test是此值的关键。

您有两种选择:

1.-使用id将信息存储在localStorage中,或使用该信息生成新对象。

使用id作为localStorage密钥:

 $("li").on("click", "a", function(){
     localStorage.setItem(id, name);
 });

这样你就不会知道你在localStorage中已经有哪个id了,所以之后检索信息很复杂。

2.-另一种选择是使用所有键值对象保存数组。您只会在localStorage中存储一个包含多个对象的对象:

 $("li").on("click", "a", function(){
     var test = localStorage.getItem("test");
     var obj = [];
     if(test){
         obj= JSON.parse(test);  
     }
     obj.push({"id":  id, "name":name});
     localStorage.setItem("test",JSON.stringify(obj));
 });

然后检索信息就像这样简单:

 var test = JSON.parse(localStorage.getItem("test"));  // Returns array with multiple objects

http://jsfiddle.net/CgpeF/

答案 1 :(得分:2)

由于localStorage每次使用相同的密钥“test”,因此每次点击都会覆盖相同的值。尝试使用

localStorage.setItem(id, name);

答案 2 :(得分:0)

您可以将以前的本地存储保存到变量中,然后将其与新数据合并。像这样:

 $("li").on("click", "a", function(){
       /* get the previously saved local storage */
       var previouslocalstorage = localStorage.getItem("test");

       /*get the new test data */
       var newtest = JSON.stringify({"id":  id, "name":name});            

       /*join the previous and the new to localstorage */
       localStorage.setItem("test", previouslocalstorage + newtest);
 });

现在应该保存每组新的测试数据