开发者

How to change a single value of checkbox inside a localStorage?

开发者 https://www.devze.com 2023-04-01 15:46 出处:网络
I\'m trying to change a value inside localstorage. This item is the status of a checkbox. I want, ever开发者_JS百科ytime that a checkbox is checked to set the value to true or false of that checkbox.

I'm trying to change a value inside localstorage. This item is the status of a checkbox. I want, ever开发者_JS百科ytime 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:

How to change a single value of checkbox inside a localStorage?

I hope someone could help me. I've been working on it for few days... Here is a fiddle for it: http://jsfiddle.net/CC5Vw/7/

Thanks alot


look at this: http://jsfiddle.net/Rh4Au/6/ works well..

changes http://jsfiddle.net/CC5Vw/7/ to http://jsfiddle.net/Rh4Au/6/


line 30:

+ "<div class='checkbox'><input type='checkbox' class='test' id='status-" + i + "'></div>"
i chaged to j because i is the length and j is the iterator.


insertion after line 34:

    var tempasd = orderList[j].split("-")[1];
    if(localStorage.getItem("status-"+tempasd) == "true") {
        $("#status-"+j).get(0).checked = true
    }
    else {
        $("#status-"+j).get(0).checked = false
    }
}

The code loads the data from localStorage and check in the checked checkboxes.
The tempasd is a temporary variable store the current ID num of the checkbox (because they not always come ascending.


changes from line 99 to 117:

// ON STATUS CLICK   
console.log('i=',i,' j=',j, 'k=',k);


$itemList.delegate("#status-" + i, 'click', function(e) {  // ON CLICK
    var $this = $(this);
    var parentId = $this.attr('id');    
       
    if ($this.is(":checked")) {


        console.log('set ', parentId, 'to foo');
        localStorage.setItem(parentId, 'foo');
    //            localStorage.setItem("'" + parentId + "'".val("fdgsdagf"));
    //            localStorage.setItem($this.parent().attr('checked', true)); 
    //            window.location = "http://mail.aol.com"
    }

});

to

// ON STATUS CLICK   
console.log('i=',i,' j=',j, 'k=',k);
var tempxx;
for(tempxx = 0;tempxx < j; tempxx++) {
$itemList.delegate("#status-" + tempxx, 'click', function(e) {  // ON CLICK
    var $this = $(this);
    var parentId = $this.parent().parent().attr('id').split("-")[1];   


    

        console.log('set ', parentId, 'to foo');
        localStorage.setItem("status-"+parentId, $this.is(":checked"));
//            localStorage.setItem("'" + parentId + "'".val("fdgsdagf"));
//            localStorage.setItem($this.parent().attr('checked', true)); 
//            window.location = "http://mail.aol.com"

   
});

}

i need the loop because it needs to delegate an event to each checkbox, and also the event must set the localStorage to false when it gets unchecked.

btw the .parent().parent() is unnecesarry now because i fixed at line 30.

0

精彩评论

暂无评论...
验证码 换一张
取 消