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 № 1Przed 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];
}