Comutarea element in localStorage

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
Marius
Mesaje:60

Comutarea element in localStorage

Vreau să creez o funcție de comutare pentru LocalStorage unde sa se retină alegerea utilizatorului.
Vreau să încarce preferința curentă la încărcarea paginii, dacă a fost făcută una, și apoi să poata comuta alta starea prin clic pe un buton.

Codul meu este mai jos, dar nu funcționează.

Cod: Selectaţi tot

// ON PAGE LOAD, IF USER PREFERS DARK, ADD DARK CLASS TO HTML
if (window.localStorage.getItem('preferDark')) {
 $('html').toggleClass('dark');
}

// TOGGLE STATE ON CLICK
$('.wrapper').click(function(){
  if (window.localStorage.getItem('preferDark', true)) {
    window.localStorage.setItem('preferDark', false);  
} else {
    window.localStorage.setItem('preferDark', true); 
  }
  $('html').toggleClass('dark');
});

MarPlo Mesaje:4343
Nu poți sa păstrezi valori tip boolean în localStorage. De aceea ai eroare. Încerca să folosesti, de exemplu, 0 pentru False și 1 pentru True.
Inca ceva: localStorage nu poate păstra valori tip numar - poti sa adaugi ca numar sau boolean, dar va fi convertit în șir.

Incearca asta:

Cod: Selectaţi tot

if (+ window.localStorage.getItem('preferDark')) {
  $('html').toggleClass('dark');
}

$('.wrapper').click(function () {
  if (+ window.localStorage.getItem('preferDark')) {
    window.localStorage.setItem('preferDark', 0);
  }
  else {
    window.localStorage.setItem('preferDark', 1);
  }
  $('html').toggleClass('dark');
});
Observatie: Se foloseste semnul + înainte de a obține valoare de la localStorage pentru a o converti în Număr.