我正在尝试使用localStorage来保存字符串数组。我有一个函数addToFav(string)
,它意味着将字符串值加载到一个包含程序名的数组中,或者在我的情况下包含pNames。我正在尝试遵循这个大纲:How do I store an array in localStorage?
localStorage.arrayNum = 0;
var pNames=[];
function addToFav(string)
{
pNames[localStorage.arrayNum] = string;
if (localStorage.arrayNum)
{
localStorage.arrayNum=Number(localStorage.arrayNum)+1;
}
else
{
localStorage.arrayNum=1;
}
localStorage['pNames']=JSON.stringify(pNames);
var storedNames=JSON.parse(localStorage['pNames']);
document.getElementById("testField").innerHTML=storedNames;
}
当我单击调用addToFav(string)
的按钮时,我传递给函数的字符串显示在testfield div中,这是正常的。但是,再次启动该函数应该向数组添加另一个元素,但它没有,它只是重复添加到pNames [0],这是因为我认为pNames
和arrayNum
每次都被重新声明。有了这个,有谁知道如何防止这个问题?我想创建一个数组,在用户调用我的函数时添加喜欢的项目。
谢谢!
答案 0 :(得分:2)
这是因为您每次都使用pNames作为您的密钥。
localStorage['pNames']=JSON.stringify(pNames);
您应该执行以下操作:
localStorage['pNames'+someVal]=JSON.stringify(pNames);
答案 1 :(得分:0)
永远不要像普通对象那样访问localstorage!使用according functions for that。这也修复了你提到的代码ido中的错误;)