Toggling localStorage item
Topics related to client-side programming language.
Post questions and answers about JavaScript, Ajax, or jQuery codes and scripts.
-
Marius
- Posts:107
Toggling localStorage item
I want to create a toggle function for my localStorage where I want it to remember the user's choice.
I want it load the current preference on page load, if one has been made, and then toggle the state on click.
My code is below, but it's not working.
Code: Select all
// 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');
});
Admin
Posts:805
You can't keep boolean in localStorage. That's why you have an error. Try to keep, for example, 0 for False and 1 for True. But remember that localStorage also can't keep integer - you can pass integer or boolean but it will be converted to string.
Try this:
Code: Select all
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');
});
Note: I use + sign before getting value from localStorage to convert it to Number.