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

Pau*_*aul 3 jquery html5 local-storage

我有一组项目得到保存,但我正在尝试更改一个值后,我检索它之前,我把它传递给我的PHP函数.是否可以只更改一个项目?

我的项目字符串如下所示:

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

start=0&type=1
Run Code Online (Sandbox Code Playgroud)

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

window.localStorage.setItem('localusers', $("#profile_form_id").serialize());
Run Code Online (Sandbox Code Playgroud)

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

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

有什么想法或建议吗?

Jos*_*ber 7

localstorage不返回数组或对象.它只能存储一个字符串.

人们绕过它的方式是JSON.stringify()将数组/对象传递给它setItem.然后,当用它检索它时getItem(),你运行JSON.parse()它.

假设这是一个对象,并且你已经解析了它,你可以args在发送变量之前修改它:

args.type = 6;
Run Code Online (Sandbox Code Playgroud)

为了方便这一切,这里有一个小助手,你可以打电话:

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;
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

如果你有这个脚本,就可以设置并通过获得的物品localstorage.getlocalstorage.set,它会自动将其转换为从JSON&.