#javascript #html
#javascript #HTML
Вопрос:
Я пытаюсь создать темную тему для своего веб-сайта, и я использовал флажок, чтобы это работало. Я написал некоторый JS-код, и после обновления я хочу, чтобы статус проверки оставался прежним (если темная тема была включена до обновления, она должна оставаться прежней). Я попытался использовать localStorage, но с помощью этого мне ничего не удалось добиться. Есть какие-нибудь идеи?
const toggle = document.getElementById('toggle');
const body = document.body;
toggle.addEventListener('input', e => {
const isChecked = e.target.checked;
if (isChecked) {
localStorage.body.classList.add('dark-theme');
} else {
body.classList.remove('dark-theme');
}
});
<div class="toggle">
<input type="checkbox" id="toggle" autocomplete="off" />
<label for="toggle"></label>
<h4 class="credits" id="credits">amp;#169; Irimia Nicolae amp; Zaramp;#259; Mihnea Tudor</h4>
</div>
Комментарии:
1. Что такое
localStorage.body
? Я собирался предложить вам использоватьlocalStorage
, но, похоже, вы использовали его неправильно2. Ну, const body представляет тело моего html. Если я удалю оттуда localStorage, мой код будет работать нормально, но при обновлении возвращается к значению non checked
Ответ №1:
Вот как вы можете использовать localStorage
const toggle = document.getElementById('toggle');
const body = document.body;
const toggleTheme = () => {
const isChecked = toggle.checked;
body.classList.toggle('dark-theme',isChecked);
localStorage.setItem('theme',isChecked ? 'dark-theme' : ''); // how to store
};
toggle.checked = localStorage.getItem('theme'); // how to read - check if found
toggle.addEventListener('input', toggleTheme); // run when clicking
toggleTheme(); // initialise on load