Как изменить одно значение флажка внутри localStorage? - PullRequest
1 голос
/ 01 сентября 2011

Я пытаюсь изменить значение внутри хранилища. Этот пункт является статусом флажка. Я хочу, каждый раз, когда флажок установлен, чтобы установить значение 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 Ответ

1 голос
/ 01 сентября 2011

посмотрите на это: 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, потому что i - это длина, а 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 флажка (поскольку они не всегда идут по возрастанию.


изменяется со строки 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...