我正在尝试使用localStorage来保存字符串数组。我有一个函数addToFav(string)
这意味着将字符串值加载到保存程序名称的数组中,或者在我的情况下是pName。我想按照这个大纲: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,这是OK的字符串。然而,再次启动函数应该添加另一个元素到数组中,但它不会,它只是反复地添加到pName [0],这是因为我认为和arrayNum
每次都得到重新声明。有了这个,有没有人知道如何防止这个问题?我想创建一个数组,当用户调用我的函数时添加最喜欢的项目。
谢谢!
这看起来像一个很好的答案。可能我建议作为一种潜在的改进:'length = localStorage ['pNames']。length; localStorage ['pNames'] [length] = JSON.stringify(pName);' – NT3RP 2012-03-12 20:43:03
不会每次都创建不同的密钥?我试图遵循这个帖子的行:http://stackoverflow.com/questions/3357553/how-to-store-an-array-in-localstorage – user1152440 2012-03-13 13:27:04
号。如果'someVal'将包含独特的信息(作为一个键应该) - 它将为特定的值创建相同的键。 – 2012-03-14 12:59:48