/ / Armazenando localStorage.getItem em uma matriz - javascript, jquery, html

Armazenando localStorage.getItem em uma matriz - javascript, jquery, html

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 № 1

Você 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];
}