2013-11-21 64 views
1

我想在單擊按鈕到lolalStorage時保存每個ID。將數組存儲到localStorage中,每次點擊一個按鈕

$("li").on("click", "a", function(){ 
    var test = {"id": id, "name":name}; 
    localStorage.setItem("test", JSON.stringify(test)); 
}); 

但是在頁面重新加載時,我只能得到一個id。

+0

如果您存儲的數據相同的變量例如'test',那麼你只會存儲一個對象,最後一個被保存。您需要使用可能基於對象ID的不同鍵,以存儲不同的對象並能夠檢索它們。 – melc

回答

4

您在每次點擊時覆蓋同一項目,因此您只能存儲最後一個。 test是這個價值的關鍵。

你有兩個選擇:

1.-使用id存儲在localStorage的信息或產生與信息的新對象。

使用id爲localStorage的關鍵:

$("li").on("click", "a", function(){ 
    localStorage.setItem(id, name); 
}); 

這樣,你不知道哪個ID的你已經在本地存儲,所以它的複雜事後檢索信息。

2.-另一種選擇是保存一個包含所有鍵值對象的數組。您將只存儲一個對象的localStorage包含多個對象:

$("li").on("click", "a", function(){ 
    var test = localStorage.getItem("test"); 
    var obj = []; 
    if(test){ 
     obj= JSON.parse(test); 
    } 
    obj.push({"id": id, "name":name}); 
    localStorage.setItem("test",JSON.stringify(obj)); 
}); 

所以後來檢索信息是因爲這樣做很容易:

var test = JSON.parse(localStorage.getItem("test")); // Returns array with multiple objects 

http://jsfiddle.net/CgpeF/

+0

如果我要使用選項編號1,我該如何檢索該值? – leeshin

+0

這就是我在評論中指出的。你可能不會知道你已經存儲了哪個ID .. – margabit

+0

嗨,你的解釋是有道理的,但是使用方法推送有一個錯誤。 – leeshin

2

由於localStorage每次都使用相同的密鑰「test」,因此每次點擊都覆蓋相同的值。嘗試使用

localStorage.setItem(id, name);