Мы заставили тему переключиться при клике по кнопке! Теперь нашу страницу можно назвать интерактивной.
Есть только одна маленькая проблема: тема переключается лишь один раз. Сообщения в консоли по-прежнему появляются при каждом клике, а значит, обработчик работает. Так в чём же дело?
Это происходит потому, что JavaScript выполняет всё в точности так, как мы ему сказали: берёт элемент page и сначала убирает класс light-theme, а после добавляет класс dark-theme. Так что при первом клике классы меняются и светлая тема переключается на тёмную, а при следующих кликах нашим инструкциям уже нечего делать: dark-theme уже есть — его не надо добавлять, а light-theme уже удалили — его больше не надо удалять.
Так как заставить темы переключаться при каждом клике? Веб-разработчикам часто приходится решать подобные задачи, и создатели JavaScript позаботились, чтобы чередовать классы можно было легко и удобно с помощью метода classList.toggle:
элемент.classList.toggle('класс');
Если класс у элемента есть, метод classList.toggle ведёт себя как classList.remove и класс у элемента убирает. А если указанного класса у элемента нет, то classList.toggle, как и classList.add, добавляет элементу этот класс.
Используем метод-переключатель classList.toggle и убедимся, что при нажатии на кнопку «Изменить тему» у элемента будет то убираться, то добавляться класс light-theme.
let page = document.querySelector('.page');
let themeButton = document.querySelector('.theme-button');
themeButton.onclick = function() {
console.log('Кнопка нажата!');
page.classList.remove('light-theme');
page.classList.add('dark-theme');
};
Спасибо! Мы скоро всё исправим)
Код изменился, нажмите «Обновить» или включите автозапуск.
Вы перешли на другую страницу
Кликните внутри мини-браузера, чтобы поставить фокус в это окно.
100%
Консоль
ЗадачиВыполнено
0
Удалите инструкции на 5-7 строках.
Внутри обработчика событий на 5 строке напишите инструкцию, которая будет переключать класс light-theme у элемента page: page.classList.toggle('light-theme');.
В мини-браузере дважды нажмите на кнопку «Изменить тему».
Если у вас возникли сложности во время прохождения задания, то вы можете обратиться за помощью на наш форум или задать вопрос в Телеграм-чате.