我正在嘗試使用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