javascript - 切换开关不会在第二次点击时返回主主题
问题描述
第一次点击它改变了主题,但是当我点击第二次时,什么也没有发生,就像它永远是第二个主题一样。所以它应该在每次点击时改变主题。任何人都可以帮我一把吗?
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>
解决方案
您正在尝试将类和主体标签称为 id - 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>
推荐阅读
- android - 有没有像右下抽屉这样的图书馆?
- r - 将值重新分配给不同的列
- dockerfile - 无法使用 git bash 创建 docker 映像
- amazon-web-services - 为什么当我添加多个 AWS Lambda 层时表现不同?
- ruby-on-rails - Rails 主动存储,高可用
- kubernetes - 在 GKE 上创建一个 Kubernetes Persistent Volume,连接到 GCE 上的外部 NFS 服务器
- android - 如何使用 os android 7 在 NanoPC T3 中运行可以访问 UART 的应用程序?
- sql - MySQL:选择倒数第二个值
- python - 如何取负数的任意幂
- css - 在弹性框中将边距设置为自动