Как сохранить класс CSS в локальном хранилище?

У меня есть HTML-страница с множеством полей, и в каждом поле, которое я щелкаю, я хочу применить новый класс CSS, который меняет цвет фона и сохраняет прогресс. Я пытаюсь сохранить этот новый класс CSS в локальном хранилище, но я делаю что-то не так. Может ли кто-нибудь помочь мне?

код JS:

let box = document.querySelector(".box");
let box_1 = document.querySelector(".box-1");
let box_2 = document.querySelector(".box-2");
const next = document.querySelector(".next");


document.onload=(function(){
  var activestate = localStorage.getItem('activestate');  
    if (activestate !== ''){       
        box.classList.add('active');
     };
});

box_1.addEventListener('click', function(){
    box_1.classList.add('active');
    box_2.classList.remove('disabled-link');
    localStorage.setItem('activestate', 'active');   
});

box_2.addEventListener('click', function(){
    if (box_1.classList.contains('active')) {
        box_2.classList.add('active');
        localStorage.setItem('activestate', 'active'); 
        next.style.display = "block";
    };
});

вот полный код в Codepen: https://codepen.io/giuse187/pen/zYLrdMe

🤔 А знаете ли вы, что...
JavaScript поддерживает объектно-ориентированное программирование.


60
2

Ответы:

Решено

Замените «document.onload» на «window.addEventListener».

`

window.addEventListener('load', function() {
  var activestate = localStorage.getItem('activestate');  
  if (activestate !== null && activestate !== '') {       
    box.classList.add('active');
  }
});

`


Ваша функция onload неверна, поэтому вы не получаете результатов.

Вместо этого используйте window.load-

window.onload = () => {
  // YOUR CODE
};

Я бы предложил использовать событие onload для вашего элемента body, что является рекомендуемым способом обработки вещей при загрузке страницы.

<body onload = "checkStorage()">....your elements...</body>

А на стороне Js сделайте вот так:

function checkStorage() {
  var activestate = localStorage.getItem('activestate'); 
  if (activestate !== ''){       
   box.classList.add('active');
  };
}