如何在localStorage中更改单个复选框值?

时间:2011-09-01 12:11:28

标签: javascript jquery local-storage

我正在尝试更改localstorage中的值。此项目是复选框的状态。我希望,每次选中复选框以将该值设置为该复选框的true或false。我尝试了很多方法,直到我意识到如果不使用JSON就无法更改值。

添加我使用的值:

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

并删除我使用:

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

现在改变我试过的值:

$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.

                }
});

这就是我的本地存储的样子: 我希望有人可以帮助我。我已经工作了几天...... 这是一个小提琴:http://jsfiddle.net/CC5Vw/7/

非常感谢

1 个答案:

答案 0 :(得分:1)

看看这个:http://jsfiddle.net/Rh4Au/6/效果很好..

http://jsfiddle.net/CC5Vw/7/更改为http://jsfiddle.net/Rh4Au/6/


第30行:

+ "<div class='checkbox'><input type='checkbox' class='test' id='status-" + i + "'></div>"
i追溯到j因为我是长度而j是迭代器。


第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
    }
}

代码从localStorage加载数据并检查选中的复选框 tempasd是一个临时变量,存储复选框的当前ID num(因为它们并不总是升序。


从第99行更改为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"
    }

});

// 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"


});

}

我需要循环,因为它需要将事件委托给每个复选框,而且当事件取消选中时,事件必须将localStorage设置为false

顺便说一下,.parent().parent()现在是不必要的,因为我修复了第30行。