【发布时间】:2022-01-04 03:10:05
【问题描述】:
我正在使用以下 javascript 代码通过 CSS 主题在暗模式和亮模式之间切换,并且效果很好,但是当我添加 local.storage 时,浏览器不会保存模式首选项。我该怎么做?
HTML:
<button id="darkmode" type="button" onclick="toggleDark()">
<span id="night" class="material-icons">mode_night </span>
<span id="light" class="material-icons">light_mode</span>
</button>
CSS:
[data-theme="light"] {
--main-color: #dfdad8;
--sec-color: #202527;
--third-color: #6e6e65;
--one--color: #acf2be4d;
--two--color: #fdb8c052;
}
[data-theme="dark"] {
--main-color: #6e6e65;
--sec-color: #f5f5f5;
--third-color: #202527;
--one--color: #acf2bd;
--two--color: #fdb8c0;
}
Javascript:
function toggleDark() {
const container = document.body;
const dataTheme = container.getAttribute("data-theme");
let theme = localStorage.getItem("data-theme");
if (dataTheme === "light") {
container.setAttribute("data-theme", "dark");
document.getElementById("night").style.display = "block";
document.getElementById("light").style.display = "none";
localStorage.toggled("data-theme", "dark");
} else {
container.setAttribute("data-theme", "light");
document.getElementById("night").style.display = "none";
document.getElementById("light").style.display = "block";
localStorage.setItem("data-theme", "light");
}
}
【问题讨论】:
-
localStorage.toggled()应该会抛出错误,除非您自己添加了这样的方法。您的开发工具控制台中有任何错误吗?为什么在一种情况下使用toggled()而在另一种情况下使用正确的setItem()? -
我已经解决了这个问题,我已经尝试了这两个选项,toggled() 和 setItem() 并且在任何情况下都不会保存“data-theme”的值。并且控制台不会抛出任何错误。
标签: javascript local-storage toggle helper darkmode