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

JavaScript页面加载修改body类报classList of null错误如何解决

问题根因

你把Main.js放在了<head>标签内引入,浏览器加载页面时会按顺序执行代码,当执行到第4行调用darkmode()的逻辑时,<body>标签还没被解析渲染,document.body的值为null,自然无法读取classList属性。
而你点击按钮触发darkmode()时,页面DOM已经完全加载完成,document.body存在,所以功能正常。

解决方法

你可以任选以下任意一种方案解决:

  • 移动脚本引入位置
    把<script src="../Main.js"></script>从<head>标签内移到</body>结束标签之前,和你其他的fruit.js、snake.js等脚本放在一起即可。

  • 监听DOM加载完成事件再执行初始化逻辑
    把你开头判断cookie调用darkmode()的代码包裹在DOM加载完成的监听回调里:

document.addEventListener('DOMContentLoaded', function() {
  if (this.c == "darkMode=1") {
    darkmode()
  }
})
  • 在darkmode函数内加安全判断
    修改darkmode函数,先判断document.body存在再执行操作,避免报错:
function darkmode() {
    var element = document.body
    // 新增判断,body不存在时直接返回
    if(!element) return
    if(this.darkMode == 1){
        element.classList.remove("dark-mode")
        this.darkMode = 0
        setCookie("darkMode", 0, 10)
    } else {
        element.classList.add("dark-mode")
        this.darkMode = 1
        setCookie("darkMode", 1, 10)
    }
}

内容的提问来源于stack exchange,提问作者Mushroom idiot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 02:45:02