我正在尝试更改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/
非常感谢
答案 0 :(得分:1)
看看这个: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行。