我的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定义数组的方法?
答案 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];
}