将localStorage.getItem存储在Array中

时间:2014-05-04 01:12:43

标签: javascript jquery html

我的HTML页面上有6个复选框。在表单提交后,我想保存在localStorage中哪些被检查以及哪些未被检查。这是我的代码:

var getmealpref;
for(var i=0, l=checkboxes.length; i<l;i++)
{
    if(checkboxes[i].checked)
    {
        localStorage.setItem('mealpref',checkboxes[i].value);
        getmealpref[i] = localStorage.getItem('mealpref');
        alert(getmealpref[0])
        okay=true;
    }
}

我想我试图以错误的方式实现它。有没有为localStorage.getItem定义数组的方法?

2 个答案:

答案 0 :(得分:1)

在存储到localStorage之前,必须序列化非字符串类型。

var checkboxes = document.querySelectorAll('input[type="checkbox"]');
var getmealpref = [];
for(var i=0, l=checkboxes.length; i<l;i++) {
    if(checkboxes[i].checked) {
        getmealpref[i] = checkboxes[i].value;
        localStorage.mealpref = JSON.stringify(getmealpref);
    }
}

// debug
getmealpref = JSON.parse(localStorage.mealpref);
alert(getmealpref[0]);


JSFiddle http://jsfiddle.net/UD4Bk/2

答案 1 :(得分:0)

localStorage将接受数组,但它们将存储为字符串,因此您最好存储JSON

var getmealpref = [];

for(var i=0, l=checkboxes.length; i<l;i++) {
    getmealpref[i] = checkboxes[i].checked;
}

localStorage.setItem('getmealpref', JSON.stringify(getmealpref));

将它们重置为存储值

var values = JSON.parse( localStorage.getItem('getmealpref') );

for(var i=0, l=checkboxes.length; i<l;i++) {
    checkboxes[i].checked = values[i];
}