【发布时间】:2015-04-06 09:31:08
【问题描述】:
原来我的 localStorage["items"] 将我的 JSON 存储为字符串。
"["{\"itemId\":1, \"itemName\":\"item1\"}", "{\"itemId\":2, \"itemName\":\"item2\"}",
"{\"\":3, \"itemName\":\"item3\"}",]"
这就是我 JSON.parse(localStorage["items"]) 时的样子:
["{"itemId":1, "itemName":"item1"}", "{"itemId":2, "itemName":"item2"}"
"{"itemId":3, "itemName":"item3"}"]
所以在我的循环中,我使用jQuery.parseJSON 将它变成了一个对象:
var object = jQuery.parseJSON(item[i]);
现在,我要做的是删除 itemId = 3 所在的对象,并确保该对象已完全从 localStorage 中删除。
到目前为止,这是我的 Javascript:
$("#button_delete").on("click", function(e){
e.preventDefault();
var items = JSON.parse(localStorage.getItem('items'));
for (var i = 0; i < items.length; i++) {
var object = JSON.parse(items[i]);
if(object.request_id == 3){
console.log(items)
delete items[i] // slice doesn't work not sure why
console.log(items)
}
}
item = JSON.stringify(items);
console.log(item);
localStorage.setItem('items', item);
})
更新
当我现在点击按钮时,它会删除该项目,但不会删除它之前的逗号。
当我在浏览器中检查 localStorage["items"] 时,它会返回:
"["{\"itemId\":1, \"itemName\":\"item1\"}","{\"itemId\":2, \"itemName\":\"item2\"}",null]"
我有另一个页面将在 html 中显示信息并返回错误:
Uncaught TypeError: Cannot read property 'itemId' of null.
那么现在有没有办法在 localStorage["items"] 中专门检查或搜索 ,null 并将其删除以便不会显示错误?
关于如何在 HTML 中显示信息的代码:
var items = JSON.parse(localStorage.getItem('items'));
var itemsHTML = "";
for(var i = 0; i < items.length; i++){
var object = jQuery.parseJSON(items[i]);
var displayItemId = object.itemId;
var displayItemName = object.itemName;
itemsHTML += "<li id="+displayItemId+">"+displayItemName+"</li>";
}
$("#viewItemList").html(itemsHTML);
【问题讨论】:
-
splice() / slice() 将工作:)
标签: javascript jquery local-storage