Javascript 在localStorage中存储阵列时出错
我的代码中有一个bug,在重新加载时只保存数组中的最后一个对象。我感觉addAccount()函数没有正确保存或插入数据。其他一切都正常工作。在我的控制台中,它显示数据正在插入到数组中,但当我刷新时,我只保存最后一个对象。 我不知道该怎么办。Javascript 在localStorage中存储阵列时出错,javascript,Javascript,我的代码中有一个bug,在重新加载时只保存数组中的最后一个对象。我感觉addAccount()函数没有正确保存或插入数据。其他一切都正常工作。在我的控制台中,它显示数据正在插入到数组中,但当我刷新时,我只保存最后一个对象。 我不知道该怎么办。 //帐户列表数组。 var accountsArray=[]; 函数addAccount(){ //获取字段并将用户数据放入变量中。 var accountName=document.getElementById('accountName')。值; var
//帐户列表数组。
var accountsArray=[];
函数addAccount(){
//获取字段并将用户数据放入变量中。
var accountName=document.getElementById('accountName')。值;
var accountBalance=document.getElementById('accountBalance')。值;
var accountType=document.getElementById(“accountType”);
var accountTypeSelected=accountType.options[accountType.selectedIndex].text;
var accountCurrency=document.getElementById(“accountCurrency”);
var accountCurrencySelected=accountCurrency.options[accountCurrency.selectedIndex].text;
变量临时对象={
“accountName”:accountName,
“accountBalance”:accountBalance,
“accountTypeSelected”:accountTypeSelected,
“accountCurrencySelected”:accountCurrencySelected
};
accountsArray.push(临时对象);
console.log(accountsArray);
saveAccountData();
showcountsarray();
}
函数saveAccountData(){
setItem('accountsArray',JSON.stringify(accountsArray));
}
函数showcountsarray(){
//var accountsLocalStorage=JSON.parse(localStorage['accountsArray']);
if(localStorage.getItem(“accountsArray”)==null){
document.getElementById(“getStarted”).style.visibility=“visible”;
document.getElementById(“balanceToolbarName”).style.visibility=“hidden”;
document.getElementById(“accountsMainList”).style.visibility=“hidden”;
}否则{
var accountsLocalStorage=JSON.parse(localStorage['accountsArray']);
console.log(accountsLocalStorage);
var accountInfo='';
var i=0;
while(i;
document.getElementById(“accountsList”).innerHTML=accountInfo;
i++;
}
document.getElementById(“getStarted”).style.visibility=“hidden”;
document.getElementById(“balanceToolbarName”).style.visibility=“visible”;
document.getElementById(“accountsMainList”).style.visibility=“visible”;
}
}
通过您提供的链接测试,您的所有功能都能正常工作。当页面加载时,它成功地从本地存储器检索数据(如果有),并显示在页面上。但是,全局数组变量accountsArray
由从本地存储器检索的数据填充
您需要重新填充全局数组,否则在调用saveAccountData
时,它将保存数组中包含的任何内容,这实际上会覆盖本地存储中的任何内容。要修复它,只需添加此代码块
$(function(){
var data = localStorage.getItem("accountsArray");
if(data != null)
accountsArray = JSON.parse(localStorage.getItem("accountsArray"));
});
您在代码中的何处调用
addAccount()
?在调用saveAccountData()之前是否多次调用它?我相信saveAccountData将销毁您之前在其中放入的任何内容,因此,如果您在调用saveAccountData()
之前没有多次调用addAccount()
,您实际上只会得到保存在那里的最后一项。@GeniaS。我有点明白你的意思。我在我的网站上发布了所有代码-这个应用程序是一个web应用程序@GeniaS。如果accountsArray
是一个全局变量,这怎么可能发生saveAccountData
存储accountsArray
变量中的任何内容……因此,我认为您的理论无法解释saveAccountData
保存最后一个变量的原因item@Leo的确但我要问的是OP在代码中调用的addAcount()
。没有那个电话,什么有用的事情都不会发生,对吧?而且它不在提供的示例中。@jryankennedy它对我来说工作得非常好…添加了两个项目…刷新了它从本地storageDude成功加载的浏览器,你太棒了!它工作得很好。非常感谢你!