You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现网页暗黑模式刷新后保持状态的问题求助

实现网页暗黑模式刷新后保持状态的问题求助

嘿,我懂你的需求——就是想让网页的暗黑模式在刷新后还能保持对吧?你的现有代码已经能完成暗黑模式的切换,但在状态存储和页面初始化这两步有小问题,我来帮你调整一下~

你现在的代码里,用localStorage.setItem("checkbox", checkbox)存的是整个checkbox元素对象,这其实存不了有效数据的,我们应该存储的是checkbox的勾选状态(布尔值),这样页面重新加载时才能读取这个状态来恢复暗黑模式。

下面是修改后的完整方案:

第一步:调整状态存储逻辑

切换暗黑模式时,把checkbox的checked属性值(true/false)存入localStorage,而不是存储元素本身。

第二步:页面加载时恢复状态

在页面加载完成后,读取localStorage里保存的状态,同步设置checkbox的勾选状态和body的dark类。

完整代码如下:

HTML部分

<form action="" method="post" id="formInput">
  <input type='checkbox' id='checkbox'>
</form>

JavaScript部分

const checkbox = document.getElementById("checkbox");

// 页面加载完成后恢复之前的暗黑模式状态
window.addEventListener('load', () => {
  // 从localStorage读取保存的状态,默认未开启暗黑模式
  const isDarkMode = localStorage.getItem('darkMode') === 'true';
  
  // 同步checkbox的勾选状态
  checkbox.checked = isDarkMode;
  // 根据状态设置body的类
  isDarkMode ? document.body.classList.add('dark') : document.body.classList.remove('dark');
});

// 切换暗黑模式的事件监听
checkbox.addEventListener("change", () => {
  // 切换body的dark类
  document.body.classList.toggle("dark");
  // 将当前的勾选状态存入localStorage
  localStorage.setItem('darkMode', checkbox.checked);
});

这样修改后,每次切换暗黑模式时,当前的状态都会被存在浏览器的localStorage里;页面刷新或重新打开时,会自动读取这个状态,恢复到你之前设置的模式啦~

备注:内容来源于stack exchange,提问作者Alfian Eka Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:24:32