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

汉堡菜单点击事件无控制台报错但失效的问题排查与解决

移动端汉堡菜单移植后无响应及滚动报错问题

从CodePen获取的菜单示例代码在原站点可正常运行,但移植到个人网站后出现两个问题:

  • 点击汉堡菜单唤出移动端菜单时无反应,控制台无任何报错
  • 滚动时头部背景切换功能抛出类型错误

相关代码片段

汉堡菜单控制代码

const navbarMenu = document.getElementById("menu");
const burgerMenu = document.getElementById("burger");
const headerMenu = document.getElementById("header");

// 点击汉堡按钮切换导航菜单显示/隐藏
if (burgerMenu && navbarMenu) {
   burgerMenu.addEventListener("click", () => {
      burgerMenu.classList.toggle("is-active");
      navbarMenu.classList.toggle("is-active");
   });
}

对应HTML结构

<!-- 头部区域 -->
<header class="header" id="header">
   <nav class="navbar container">
      <a href="#" class="brand"><img src="#"></a>
      <div class="burger" id="burger">
         <span class="burger-line"></span>
         <span class="burger-line"></span>
         <span class="burger-line"></span>
      </div>
      <div class="menu" id="menu">
         <ul class="menu-inner">
            <li class="menu-item"><a href="#" class="menu-link">菜单选项</a></li>
            <li class="menu-item"><a href="#" class="menu-link">菜单选项</a></li>
            <li class="menu-item"><a href="#" class="menu-link">菜单选项</a></li>
            <li class="menu-item"><a href="#" class="menu-link">菜单选项</a></li>
            <li class="menu-item"><a href="#" class="menu-link">菜单选项</a></li>
         </ul>
      </div>
      <a href="#" class="menu-block">菜单选项</a>
   </nav>
</header>

滚动监听代码及报错

// 滚动时切换头部背景样式
window.addEventListener("scroll", () => {
   if (this.scrollY >= 85) {
      headerMenu.classList.add("on-scroll");
   } else {
      headerMenu.classList.remove("on-scroll");
   }
});

滚动操作触发控制台错误:

Uncaught TypeError: Cannot read properties of null (reading 'classList')

调试验证

在Chrome控制台执行document.getElementById("burger")和document.getElementById("menu"),可正确获取对应DOM元素,排除元素不存在的问题。


最终解决方法

为脚本引入标签添加defer属性:

<script src="js/header.js" defer></script>

添加后,汉堡菜单点击响应和滚动头部样式切换功能均恢复正常。


内容的提问来源于stack exchange,提问作者Patrick Ben

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:35:32