避免重复声明

时间:2012-03-12 20:35:03

标签: javascript html json html5

我正在尝试使用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],这是因为我认为pNamesarrayNum每次都被重新声明。有了这个,有谁知道如何防止这个问题?我想创建一个数组,在用户调用我的函数时添加喜欢的项目。

谢谢!

2 个答案:

答案 0 :(得分:2)

这是因为您每次都使用pNames作为您的密钥。

localStorage['pNames']=JSON.stringify(pNames);

您应该执行以下操作:

localStorage['pNames'+someVal]=JSON.stringify(pNames);

答案 1 :(得分:0)

永远不要像普通对象那样访问localstorage!使用according functions for that。这也修复了你提到的代码ido中的错误;)

相关问题