大家好,所以我有一个表单,其中包含项目名称,代码等数据,所以当我按下输入按钮时... 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
答案 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));
}