如何更改localStorage项目中的单个值?

时间:2011-08-26 15:48:38

标签: jquery html5 local-storage

我有一组保存的项目,但是在我检索它之后,在我将它传递给我的php函数之前,我正试图更改一个值。是否可以只改变一个项目?

我的项目字符串如下:

var args = window.localStorage.getItem("localusers");

start=0&type=1

我正在保存localusers项目,如下所示:

window.localStorage.setItem('localusers', $("#profile_form_id").serialize());

我正在尝试将type的值设置为6

我找不到一个支持的方法,允许我在数组中获取/设置一个项目,所以我需要遍历数组,更改值,然后再次设置localusers项目?它似乎不是很有效但我看不到任何其他方式。

有任何想法或建议吗?

2 个答案:

答案 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.getlocalstorage.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;