如何更改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.getlocalstorage.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;