如何使用json创建数组并存储在本地存储中

时间:2014-09-02 07:07:18

标签: javascript arrays json

大家好,所以我有一个表单,其中包含项目名称,代码等数据,所以当我按下输入按钮时... iv使用json stringify并获取存储在本地存储中的内容的警报。但是,当我点击重置并创建一个新项目时,它只显示新项目,无论如何我可以存储在本地存储中创建的所有项目......?这是我编码的一部分。我是初学者,请原谅这个问题是否过于简单

由于

$('#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 个答案:

答案 0 :(得分:0)

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

我认为这足以让你玩耍。一个比localStorage更高级的概念,用于稍微不同的purpuses,将是pouchdb - 浏览器中的websql。

答案 1 :(得分: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));
}