javascript - 暗模式 TypeError:无法将属性“onClick”设置为 null
问题描述
这是我的代码,试图添加切换网站颜色的主题按钮,所以我使用了 CSS 变量,我确实知道 js 代码有什么问题
const darkButton = document.getElementById('dark');
const lightButton = document.getElementById('light');
const body = document.body;
darkButton.onClick = () => {
body.classList.replace('light', 'dark');
localStorage.setItem('theme', 'dark');
};
lightButton.onClick = () => {
body.classList.replace('dark', 'light');
localStorage.setItem('theme', 'light');
};
.light {
--bg: var(--gray0);
--bg-nav: linear-gradient(to right, var(--gray1), var(--gray3));
--bg-dropdown: var(--gray0);
--text: var(--gray6);
--border-color: var(--blue);
--bg-solar: var(--yellow);
}
.dark {
--bg: var(--gray5);
--bg-nav: linear-gradient(to right, var(--gray5), var(--gray6));
--bg-dropdown: var(--gray6);
--text: var(--gray0);
--border-color: var(--purple);
--bg-solar: var(--blue);
}
<div>
<div class="nav-item has-dropdown">
<button className="nav-link Togglebutton" href="/">
Theme
</button>
<ul class="dropdown">
<div class="dropdown-item column">
<div id="light">light</div>
</div>
<div class="dropdown-item column">
<div id="dark">dark</div>
</div>
</ul>
</div>
</div>
瘦我有这个错误
解决方案
使用此代码:
<html>
<head>
<script language="javascript">
function toggle(i) {
if (i == 0) {
document.body.classList.replace('light', 'dark');
localStorage.setItem('theme', 'dark');
}
if (i == 1) {
document.body.classList.replace('dark', 'light');
localStorage.setItem('theme', 'light');
}
}
</script>
</head>
<body>
<div>
<div class="nav-item has-dropdown">
<button className="nav-link Togglebutton" href="/">
Theme
</button>
<ul class="dropdown">
<div class="dropdown-item column">
<div id="light" onclick="toggle(0)">light</div>
</div>
<div class="dropdown-item column">
<div id="dark" onclick="toggle(1)">dark</div>
</div>
</ul>
</div>
</div>
</body>
</html>
推荐阅读
- r - 将列表转换为具有多列的 data.frame
- ruby-on-rails - 为什么应用程序记录会更改我的 RSpec 测试结果
- python - 我可以通过仅传递 ec2-instance 的私有 IP 来使用 boto 3 获取给定实例的区域值吗
- repository - 是否可以在 NXRM 中为 helm 托管 repo 创建内容选择器
- gem5 - 如何在 gem5-20 中使用 m5 将它与我自己的 C++ 程序链接?
- c# - 基于端点的路由.net core 3.1中缺少端点
- java - 将 JSON 数组添加到现有的 JSON 文件
- eclipse - 无法在 Eclipse 中到处安装团队资源管理器?
- r - 创建游戏模型的 r 数据框
- python - 如何将代码修改为所需的格式?