Eu tenho 6 caixas de seleção na minha página HTML. Após o envio do formulário, eu quero salvar no localStorage quais são verificados e quais não são verificados. Este é o meu código:
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;
}
}
Eu acho que estou tentando alcançar o caminho errado. Existe algum método de definir uma matriz para localStorage.getItem?
Respostas:
1 para resposta № 1Você deve serializar tipos não-string antes de armazenar em 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
0 para resposta № 2
localStorage aceitará arrays, mas eles serão armazenados como strings, então é melhor você armazenar JSON
var getmealpref = [];
for(var i=0, l=checkboxes.length; i<l;i++) {
getmealpref[i] = checkboxes[i].checked;
}
localStorage.setItem("getmealpref", JSON.stringify(getmealpref));
para redefini-los para os valores armazenados
var values = JSON.parse( localStorage.getItem("getmealpref") );
for(var i=0, l=checkboxes.length; i<l;i++) {
checkboxes[i].checked = values[i];
}