How do I change a single value inside a localStora

2019-06-25 17:43发布

问题:

I'm trying to change a value inside localstorage. This item is the status of a checkbox. I want, everytime that a checkbox is checked to set the value to true or false of that checkbox. I tried many ways until I realized that there is no way you can change a value without using JSON.

To add the value I use:

localStorage.setItem("status-" + i, $status.is(":checked"));

and to delete I use:

var parentId = $this.parent().attr('id');
localStorage.removeItem("'" + parentId + "'");

Now to change the value I tried:

$itemList.delegate("#status-" + i, 'click', function(e) {

                var $this = $(this);
                var parentId = this.parent().attr('id');            

                if ($this.is(":checked")) { 

                    localStorage.setItem("'" + parentId + "'".val("fdgsdagf"));
                    // Note that alert here works.

                }
});

This is how my local storage looks like: I hope someone could help me. I've been working on it for few days...

Thanks alot

回答1:

setItem takes two parameters:

localStorage.setItem('status-1', "'" + parentId + "'".val("fdgsdagf"));

or more likely for your case:

localStorage.setItem(parentId, "fdgsdagf");

Best Practices:

localStorage.setItem('key', JSON.stringify(value));
JSON.parse(localStorage.getItem('key'));

Here's an example: http://jsfiddle.net/F8sF2/

EDIT: from you fiddle, you need to change:

var parentId = this.parent().attr('id');    

to

var parentId = $this.attr('id');    

UPDATED http://jsfiddle.net/CC5Vw/1/



回答2:

Try this

localStorage.setItem(parentId, "fdgsdagf");

localStorage is nothing but JavaScript object you can treat them as associate array. So you can use them like this.

To set value

localStorage[parentId] = "fdgsdagf";

To get value

var status = localStorage[parentId];