我正在尝试使用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每次都会被重新声明。有了这个,有谁知道如何预防这个问题?我想创建一个在用户调用我的函数时添加收藏夹项的数组。

谢谢!

最佳答案

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

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


您应该执行以下操作:

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

09-25 17:18