2011-09-01 48 views
4

我試圖改變localstorage內的值。此項目是複選框的狀態。我希望每次檢查複選框時將該複選框的值設置爲true或false。我嘗試了很多方法,直到我意識到如果不使用JSON,您無法更改值。如何更改localStorage項目中的單個值?

添加我使用的值:

localStorage.setItem("status-" + i, $status.is(":checked")); 

和刪除我用:

var parentId = $this.parent().attr('id'); 
localStorage.removeItem("'" + parentId + "'"); 

現在改變我試過值:

$itemList.delegate("#status-" + i, 'click', function(e) { 

       var $this = $(this); 
       var parentId = this.parent().attr('id');    

       if ($this.is(":checked")) { 

        localStorage.setItem("'" + parentId + "'".val("fdgsdagf")); 
        // Note that alert here works. 

       } 
}); 

這是怎麼了我本地存儲看起來像: 我希望有人能幫助 我。我一直工作在它幾天...

非常感謝

回答

4

setItem有兩個參數:

localStorage.setItem('status-1', "'" + parentId + "'".val("fdgsdagf")); 

或更有可能爲您的情況:

localStorage.setItem(parentId, "fdgsdagf"); 

最佳做法:

localStorage.setItem('key', JSON.stringify(value)); 
JSON.parse(localStorage.getItem('key')); 

下面是一個例子:http://jsfiddle.net/F8sF2/

編輯:從您不甘示弱,您需要更改:

var parentId = this.parent().attr('id');  

var parentId = $this.attr('id');  

修訂http://jsfiddle.net/CC5Vw/1/

+0

。我調整了他們,以防萬一類似的作品,但再次沒有任何作品。 – jQuerybeast

+0

http://stackoverflow.com/questions/7207337/how-do-i-change-a-single-value-inside-a-localstorage-item在這篇文章中,一個傢伙說你不能改變物品的價值而沒有JSON。但他這樣做的方式是令人費解的。謝謝 – jQuerybeast

+0

我想你會想'$ this.attr('id')',而不是父母 – Joe

3

試試這個

localStorage.setItem(parentId, "fdgsdagf"); 

localStorage不過是JavaScript對象,您可以將它們視爲關聯數組。所以你可以像這樣使用它們。

設定值

localStorage[parentId] = "fdgsdagf"; 

中獲取價值遺憾的是都沒有工作

var status = localStorage[parentId]; 
+0

我想我需要使用'我',因爲我有「var i = Number(localStorage.getItem('todo-counter'))+ 1」,這樣每次複選框增加值。謝謝 – jQuerybeast

相關問題