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

实现JS鼠标悬停效果时遇uncaught TypeError错误,如何修复?

解决 "Cannot read properties of null (reading 'addEventListener')" 错误

这个错误表示你的 background 变量值为 null,也就是 document.querySelector(".background") 没有找到目标DOM元素。最常见的原因是JavaScript代码在HTML元素加载完成前就执行了。

以下是几种可行的修复方案:

方案1:将脚本放在<body>末尾

把JavaScript代码移到HTML文档的<body>标签最后,确保所有DOM元素已加载完成后再执行代码:

<body>
  <div class="background"></div>
  <!-- 其他HTML内容 -->
  <script>
    let background = document.querySelector(".background")
    background.addEventListener('mouseover', event =>{
        event.target.style.background = "linear-gradient(-45deg,#012326,#1FBFA2,#0FF29F,#F2CE16,#D98E04)";
        event.target.style.backgroundSize = "2000% 2000%";
        event.target.style.animation = "animateBack 15s ease infinite";
    })
  </script>
</body>

方案2:使用DOMContentLoaded事件监听

通过监听DOMContentLoaded事件,让代码等待DOM完全解析完成后再执行:

document.addEventListener('DOMContentLoaded', () => {
    let background = document.querySelector(".background")
    background.addEventListener('mouseover', event =>{
        event.target.style.background = "linear-gradient(-45deg,#012326,#1FBFA2,#0FF29F,#F2CE16,#D98E04)";
        event.target.style.backgroundSize = "2000% 2000%";
        event.target.style.animation = "animateBack 15s ease infinite";
    })
});

方案3:给脚本标签添加defer属性

如果你的JavaScript是外部文件,在引入时添加defer属性,确保脚本在DOM解析完成后执行:

<script src="your-script-file.js" defer></script>

额外优化:添加元素存在性检查

为了避免意外报错,可以先检查元素是否存在再绑定事件:

let background = document.querySelector(".background")
if (background) {
    background.addEventListener('mouseover', event =>{
        event.target.style.background = "linear-gradient(-45deg,#012326,#1FBFA2,#0FF29F,#F2CE16,#D98E04)";
        event.target.style.backgroundSize = "2000% 2000%";
        event.target.style.animation = "animateBack 15s ease infinite";
    })
}

内容的提问来源于stack exchange,提问作者Learning Smart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:54:33