如何更改localStorage项目中的单个值?
我有一组项目得到保存,但我正在尝试更改一个值后,我检索它,然后我将它传递给我的PHP函数。 是否可以只更改一个项目?
我的项目字符串如下所示:
var args = window.localStorage.getItem("localusers"); start=0&type=1
我正在保存localusers项目,如下所示:
window.localStorage.setItem('localusers', $("#profile_form_id").serialize());
我正在尝试将type的值设置为6
我找不到一个支持的方法,允许我在数组中获取/设置一个项目,所以我需要迭代数组,更改值,然后再次设置localusers项目? 它似乎没有效率,但我看不到任何其他方式。
有什么想法或建议吗?
localstorage
不返回数组或对象。 它只能存储一个字符串。
人们绕过它的方式是将JSON.stringify()
传递给setItem
之前的数组/对象。 然后,当使用getItem()
检索它时,在其上运行JSON.parse()
。
假设这是一个对象,并且你已经解析了它,你可以在发送之前修改你的args
变量:
args.type = 6;
为了方便这一切,这里有一个小助手,你可以打电话:
var localstorage = { set: function (key, value) { window.localStorage.setItem( key, JSON.stringify(value) ); }, get: function (key) { try { return JSON.parse( window.localStorage.getItem(key) ); } catch (e) { return null; } } };
如果包含此脚本,则可以通过localstorage.get
和localstorage.set
设置和获取项目,并自动将其转换为JSON。
试试这个
var args = window.localStorage.getItem("localusers"); args["type"] = 6; //Update the localStorage with new value localStorage.setItem("localusers", JSON.stringify(args));
与其他JavaScript
对象一样,您可以将localStorage
对象视为关联数组。 您可以简单地使用方括号,而不是使用getItem()
和setItem()
方法。
var args = localStorage["localusers"]; args["type"] = 6; //Update the localStorage with new value localStorage["localusers"] = args;