2016-05-27 75 views
1

我試圖存儲基於此功能的多個項目:單擊按鈕時如何在本地存儲器上存儲多個項目?

onclick="s(iId)" 

這是我使用的功能:

function s(i_id) { 
    var items = []; 
    items.push(i_id); 
    localStorage.setItem("i", JSON.stringify(i)); 
} 

的問題是,它只能存儲一個ID時點擊按鈕,每次點擊刷新。我怎樣才能讓它存儲多個ID?

回答

3

問題是,您正在創建一個新數組,並在其中推入一個ID,然後在每次調用函數時保存它。你可以做的兩件事是將items數組移到該函數之外,並在保存之前直接將其推入。第二種方法是獲取已存儲的值,並在保存之前用JSON.parse解析並推入新項目。

我建議去選擇1,即使它創建一個全局變量。它快得多。

var items = []; 

function store(item_id) { 
    items.push(item_id); 
    localStorage.setItem("item", JSON.stringify(items)); 
} 
+0

它仍然不存儲新的值。它只存儲一個。 – ClauCece

+1

不可以?它爲我工作:https://jsfiddle.net/htre12g4/ – GMchris

+0

是的!謝謝,它正在工作..我的壞。 – ClauCece

0

你必須這樣調用的onclick:

onclick="store([itemId1, itemId2, itemId3])" 

和功能:

function store(item_ids) { 
    var items = []; 
    for(var i = 0; i < item_ids.length; i++) { 
     items.push(item_ids[i]); 
    } 
    localStorage.setItem("item", JSON.stringify(items)); 
} 

,如果你想新的陣列添加到存儲的每次點擊考慮...