ahf*_*eak 5 javascript jquery local-storage
原来我的localStorage [“ items”]将我的JSON存储为字符串。
"["{\"itemId\":1, \"itemName\":\"item1\"}", "{\"itemId\":2, \"itemName\":\"item2\"}",
"{\"\":3, \"itemName\":\"item3\"}",]"
Run Code Online (Sandbox Code Playgroud)
这是当我JSON.parse(localStorage [“ items”])时的样子:
["{"itemId":1, "itemName":"item1"}", "{"itemId":2, "itemName":"item2"}"
"{"itemId":3, "itemName":"item3"}"]
Run Code Online (Sandbox Code Playgroud)
所以在我的循环中,我通过使用jQuery.parseJSON以下命令将其变成一个对象:
var object = jQuery.parseJSON(item[i]);
Run Code Online (Sandbox Code Playgroud)
现在,我想做的是删除对象,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);
})
Run Code Online (Sandbox Code Playgroud)
更新
当我现在单击按钮时,它将删除该项目,但是不会删除之前的逗号。
当我在浏览器中检查localStorage [“ items”]时,它返回以下内容:
"["{\"itemId\":1, \"itemName\":\"item1\"}","{\"itemId\":2, \"itemName\":\"item2\"}",null]"
Run Code Online (Sandbox Code Playgroud)
我有另一个页面,它将在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);
Run Code Online (Sandbox Code Playgroud)
试试这个。
$("#button_delete").on("click", function(e){
e.preventDefault();
var items = JSON.parse(localStorage["items"]);
for (var i = 0; i < items.length; i++) {
if(items[i].itemId == 3){
items.splice(i,1);
break;
}
}
})
Run Code Online (Sandbox Code Playgroud)
所有的答案都是正确的,但你必须:
所以 :
1.
var items = JSON.parse(localStorage.getItem("items")); // updated
Run Code Online (Sandbox Code Playgroud)
2.
for (var i =0; i< items.length; i++) {
var items = JSON.parse(items[i]);
if (items.itemId == 3) {
items.splice(i, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
3.
items = JSON.stringify(items); //Restoring object left into items again
Run Code Online (Sandbox Code Playgroud)
4.
localStorage.setItem("items", items);
Run Code Online (Sandbox Code Playgroud)
解析为 JSON 并将其存储为字符串有点烦人,但这就是 localStorage 的工作方式。