Я пытаюсь использовать 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, который OK. Тем не менее, запуск функции снова должен добавить еще один элемент в массив, но это не так, он просто несколько раз добавляет к pNames [0], потому что я думаю, что pNames
и arrayNum
получают каждый раз. С этим, кто-нибудь знает, как предотвратить эту проблему? Я хотел бы создать массив, который добавляет любимые элементы, когда пользователь вызывает мою функцию.
Спасибо!
Это выглядит как отличный ответ. Могу ли я предложить в качестве потенциального улучшения: 'length = localStorage ['pNames']. Length; localStorage ['pNames'] [length] = JSON.stringify (pNames); ' – NT3RP
не будет каждый раз создавать разные ключи? Я пытаюсь следовать чему-то в этом роде: http://stackoverflow.com/questions/3357553/how-to-store-an-array-in-localstorage – user1152440
Нет. Если «someVal» будет содержать уникальную информацию (как ключ должен) - он создаст тот же ключ для определенного значения. –