我有一组保存的项目,但是在我检索它之后,在我将它传递给我的php函数之前,我正试图更改一个值。是否可以只改变一个项目?
我的项目字符串如下:
var args = window.localStorage.getItem("localusers");
start=0&type=1
我正在保存localusers项目,如下所示:
window.localStorage.setItem('localusers', $("#profile_form_id").serialize());
我正在尝试将type的值设置为6
我找不到一个支持的方法,允许我在数组中获取/设置一个项目,所以我需要遍历数组,更改值,然后再次设置localusers项目?它似乎不是很有效但我看不到任何其他方式。
有任何想法或建议吗?
答案 0 :(得分:7)
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。
答案 1 :(得分:1)
试试这个
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;