#javascript #html
#javascript #HTML
Вопрос:
Сначала щелкните по нему, чтобы изменить тему, но когда я нажимаю 2-й раз, ничего не происходит, как будто это навсегда вторая тема. Поэтому он должен менять тему при каждом нажатии. Кто-нибудь может помочь мне, пожалуйста.
let element = document.getElementById('body');
let toggle = document.getElementById('toggle-button');
toggle.addEventListener('click', function() {
if (element.className == 'dark') {
element.className = 'light';
} else {
element.className = 'light';
}
});
body {
height: 100vh;
font-family: 'Inter', sans-serif;
color: white;
margin: auto 165px;
padding-top: 50px;
background: linear-gradient(to bottom, #20222F 25%, #1D2128 75%);
}
.dark {
background: black;
}
.light {
background: burlywood;
}
<div class="toggle-button" id="toggle-button">
<span>Dark Mode</span>
<input type="checkbox" class="checkbox" id="checkbox">
<label for="checkbox" class="label">
<div class="ball"></div>
</label>
</div>
Ответ №1:
Вы пытаетесь ссылаться на класс и тег body как на идентификатор — document.getElementById
. И я заменил ваши if
условия на toggle() method
, указав burlywood
в нем цвет, поскольку ваше тело уже имеет black
цвет по умолчанию.
let element = document.querySelector('body');
let toggle = document.querySelector('.toggle-button');
toggle.addEventListener('click', function() {
element.classList.toggle('light')
});
body {
height: 100vh;
font-family: 'Inter', sans-serif;
color: white;
margin: auto 165px;
padding-top: 50px;
background: linear-gradient(to bottom, #20222F 25%, #1D2128 75%);
}
/*.dark {
background: black;
}*/
.light {
background: burlywood;
}
<div class="toggle-button" id="toggle-button">
<span>Dark Mode</span>
<input type="checkbox" class="checkbox" id="checkbox">
<label for="checkbox" class="label">
<div class="ball"></div>
</label>
</div>