我在编辑本地存储数据时遇到问题。我在本地存储中保存了Array of Array-list,它可以正常工作或保存。但是,当我尝试编辑时,它只会暂时编辑,当我刷新页面时,编辑的数据会消失,并显示我保存的原始数据
function editinfo(){
var name = document.getElementById("nameB").value;
var price = document.getElementById("priceB").value;
var quant = document.getElementById("quantityB").value;
var retrieved = window.localStorage.getItem("done");
var pro = JSON.parse(retrieved);
for (i = 0; i < pro.length; ++i){
if(pro[i][0] === name){
pro[i][1]= price
pro[i][2] = quant;
} else{
console.log("There is no such data to edit");
}
}
window.localStorage.setItem("done", JSON.stringify(pro));
}
//我保存了有关本地存储的信息,我从服务器读取数据。 var bevInventory = $ .getJSON('http://pub.jamaica-inn.net/fpdb/api.php?username=jorass&password=jorass&action=inventory_get');
function Info(){
var info = [];
bevInventory.done(function(result){
for(i = 0; i < result.payload.length; ++i){
if(result.payload[i].namn != ""){
var makeList = [result.payload[i].namn, result.payload[i].price, result.payload[i].count];
info.push(makeList);
}
}
var xx = window.localStorage.setItem("done", JSON.stringify(info));
})
return info;
}
答案 0 :(得分:0)
如果localStorage中最初没有“完成”数据,则代码将失败。 JSON.parse()解析null(因为没有数据)然后在行上发生错误
pro.length
因此,最好先检查一下它是否是第一次启动而且没有数据:
if (!pro) {
pro = [];
}
示例here
首次执行editinfo()后,数据成功保存在localStorage中。
答案 1 :(得分:0)
一种解决方案是首先检查,如果数据不存在,则将数据添加到本地存储。喜欢这个
function editinfo() {
var name = 'bob';
var price = 1;
var quant = 2; // loaded dynamically from page.
if (window.localStorage.hasOwnProperty("done")) {
var retrieved = window.localStorage.getItem("done");
var pro = JSON.parse(retrieved);
for(i = 0; i < pro.length; ++i){
if(pro[i][0] === name){
pro[i][1] = price
pro[i][2] = quant;
}
}
} else {
pro = [[name, price, quant]];
}
window.localStorage.setItem("done", JSON.stringify(pro));
}