2014-09-02 81 views
0

嗨,大家好,我有一个表单,它接收数据如项目名称,代码等,所以当我按下输入按钮时...... iv使用json stringify并获取警告存储在本地存储器中的内容。然而,当我点击重置并创建一个新的项目,它只是显示新的项目,有无论如何,我可以存储在本地存储创建的所有项目...?这是我编码的一部分。我是个新手,所以请原谅,如果问题太简单了如何使用json创建一个数组并存储在本地存储中

感谢

$('#myBox #EnterButton').click(function() { 
    ItemData = { 
     'ItemCode' : $('#ItemCode').val(), 
     'ItemName' : $('#ItemName').val() 
    }; 

    localStorage.ItemData=JSON.stringify(ItemData); 
    $('#myBox').slideUp(); 
}); 

...

$('#myBox2 #EnterButton').click(function() { 
    if (localStorage.ItemData) { 
     alert(localStorage.ItemData); 
     ItemData = JSON.parse(localStorage.ItemData); 
    } 

    if (ItemData.ItemCode) { 
     $('#myBox #ItemCode').val(ItemData.ItemCode); 
    } 

    if (ItemData.ItemName) { 
     $('#myBox #ItemName').val(ItemData.ItemName); 
    } 
}) 

,我已经宣布的ItemData为公用变量。希望它清楚。 TIA

+2

使用localStorage.setItem( '的ItemData',数据)和localStorage.getItem( '的ItemData') – 2014-09-02 07:09:23

+0

注意,'的ItemData = {}'是一个对象不是一个数组。 – GillesC 2014-09-02 07:16:11

回答

0

你必须组织你使用localStorage的方式(一个getter/setter类可能有助于维护)。从上面的代码看来,你总是用刚插入的值覆盖localStorage.ItemData。 解决方案是将localStorage.Items作为一个数组,每当插入到数组中时,迭代它以查看它是否已经添加(例如基于itemCode)并覆盖或插入新项目。

我认为这足够玩耍。比localStorage更高级的概念,用于稍微不同的purpuses会在浏览器中使用pouchdb - websql。

0

听起来好像你想要存储多个项目,你应该使用一个itemData对象数组。然后你必须解析这个(数组),然后使用类似Array.push(newItem)的东西,然后在保存之前再次将其字符串化。

var allItems = localStorage.getItem('ItemData'); 
if(allItems == null) { 
    localStorage.setItem('ItemData', JSON.stringify([ItemData])); 
} else { 
    allItems = JSON.parse(allItems); 
    allItems.push(ItemData); 
    localStorage.setItem('ItemData', JSON.stringify(allItems)); 
} 
相关问题