2011-09-01 378 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