我正在尝试使用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
每次都会被重新声明。有了这个,有谁知道如何预防这个问题?我想创建一个在用户调用我的函数时添加收藏夹项的数组。谢谢!
最佳答案
这是因为您每次都使用pNames作为密钥。
localStorage['pNames']=JSON.stringify(pNames);
您应该执行以下操作:
localStorage['pNames'+someVal]=JSON.stringify(pNames);