如何修改localStorage中的一个值?

6
我正在尝试更改localstorage中的值。该项是复选框状态。我希望每次勾选复选框时,设置该复选框的值为真或假。我尝试了许多方法,直到我意识到没有办法在不使用JSON的情况下更改值。
要添加值,我使用:
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.

                }
});

这是我的本地存储的样子: 希望有人能帮助我。我已经在这上面工作了几天...... 非常感谢。
2个回答

5

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/ 编辑: 从你的JSFiddle中,你需要进行更改:
var parentId = this.parent().attr('id');    

为了

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

已更新 http://jsfiddle.net/CC5Vw/1/


不幸的是,两者都没有起作用。我也进行了一些调整,以防类似的东西起作用,但仍然没有任何作用。 - jQuerybeast
在这篇帖子中,有人说你不能在没有JSON的情况下更改项目的值。但他的做法有点令人困惑。谢谢。 - jQuerybeast
我认为你想要$this.attr('id'),而不是parent。 - Joe
但它不会改变状态的值。请使用Firebug检查:http://fiddle.jshell.net/CC5Vw/1/show/。 - jQuerybeast
这并没有真正回答OP提出的问题。 - Felipe Alarcon

4

试试这个

localStorage.setItem(parentId, "fdgsdagf");

localStorage是一种JavaScript对象,您可以将它们视为关联数组。因此,您可以像这样使用它们。

设置值:

localStorage[parentId] = "fdgsdagf";

获取值

var status = localStorage[parentId];

我认为我需要使用“i”,因为我有“var i = Number(localStorage.getItem('todo-counter')) + 1”,所以每次复选框增加值。谢谢。 - jQuerybeast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接