/ / Przechowywanie localStorage.getItem w tablicy - javascript, jquery, html

Przechowywanie localStorage.getItem w tablicy - javascript, jquery, html

Mam 6 pól wyboru na mojej stronie HTML. Po przesłaniu formularza chcę zapisać w localStorage, które są sprawdzane, a które nie. To jest mój kod:

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;
}
}

Myślę, że staram się to osiągnąć w niewłaściwy sposób. Czy istnieje metoda definiowania tablicy dla localStorage.getItem?

Odpowiedzi:

1 dla odpowiedzi № 1

Przed zapisaniem w localStorage należy serializować typy nieciągłe.

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 dla odpowiedzi nr 2

localStorage zaakceptuje tablice, ale będą one przechowywane jako ciągi, więc lepiej jest przechowywać JSON

var getmealpref = [];

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

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

zresetować je do zapisanych wartości

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

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