如何更改 localStorage 项目中的单个值?
Posted
技术标签:
【中文标题】如何更改 localStorage 项目中的单个值?【英文标题】:How do I change a single value inside a localStorage item? 【发布时间】:2011-11-08 01:34:11 【问题描述】:我正在尝试更改本地存储中的值。此项目是复选框的状态。我希望,每次选中一个复选框以将该复选框的值设置为 true 或 false。我尝试了很多方法,直到我意识到不使用 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.
);
这是我的本地存储的样子: 我希望有人能帮助我。这几天我一直在努力...
非常感谢
【问题讨论】:
【参考方案1】: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/
【讨论】:
不幸的是,两者都不起作用。我也对它们进行了调整,以防任何类似的工作,但又没有任何工作。 ***.com/questions/7207337/… 在这篇文章中,有人说没有 JSON 就无法更改项目的值。但他这样做的方式有点令人困惑。谢谢 我想你会想要$this.attr('id')
,而不是父母
但它不会改变状态的值。检查:fiddle.jshell.net/CC5Vw/1/show with firebug。
这并不能真正回答 OP 提出的问题。【参考方案2】:
试试这个
localStorage.setItem(parentId, "fdgsdagf");
localStorage
只不过是 javascript 对象,您可以将它们视为关联数组。所以你可以像这样使用它们。
设定值
localStorage[parentId] = "fdgsdagf";
获取价值
var status = localStorage[parentId];
【讨论】:
我想我需要使用'i',因为我有“var i = Number(localStorage.getItem('todo-counter')) + 1”,这样每次复选框都会增加价值。谢谢以上是关于如何更改 localStorage 项目中的单个值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 reactjs 的 localStorage 键上的单个数组中附加用户输入?
如何在 Vue js 中使 localStorage 中的数据具有反应性