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

移动端汉堡菜单JS实现报错:无法读取null的addEventListener属性

移动端响应式汉堡菜单报错修复方案

你遇到的Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')错误,以及菜单点击无响应的问题,主要是三个细节错误导致的,以下是具体修复步骤:

1. 类名拼写不匹配

JavaScript代码中使用了.burger_menu(下划线)作为选择器,但HTML里汉堡按钮的类名是burger-menu(短横线),这会导致document.querySelector找不到元素,返回null,进而触发报错。

2. classList.toggle参数错误

navLinks.classList.toggle(".mobile-menu")里的.mobile-menu多了前缀点,toggle方法只需要传入类名本身,不需要加选择器的点符号。

3. 缺少移动端菜单激活样式

当前CSS中没有定义.mobile-menu类的样式,即使JS逻辑正确,点击汉堡按钮后导航栏也不会有视觉变化。


修正后的JavaScript代码

const burgerMenu = document.querySelector(".burger-menu");
const navLinks = document.querySelector(".nav-links");

burgerMenu.addEventListener("click", () => {
  navLinks.classList.toggle("mobile-menu");
});

补充后的CSS代码(在移动端媒体查询内添加)

在@media screen and (max-width: 900px)的规则里,添加.mobile-menu的样式:

@media screen and (max-width: 900px) {
  /* 保留原有其他样式 */

  .nav-links.mobile-menu {
    margin-left: 0;
  }
}

完整的移动端媒体查询CSS(参考)

@media screen and (max-width: 900px) {
  .navbar {
    padding: 0;
  }

  .navbar .logo {
    position: absolute;
    top: 50px;
    left: 50px;
  }

  .nav-links {
    top: 0;
    left: 0;
    position: absolute;
    background-color: rgba(146, 189, 202, 0.252);
    backdrop-filter: blur(7px);
    width: 100%;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-left: -100%;
    transition: all 0.8s ease;
  }

  /* 添加这部分激活样式 */
  .nav-links.mobile-menu {
    margin-left: 0;
  }

  .nav-links ul {
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  .navbar .nav-links ul li {
    margin: 25px;
    font-size: 2em;
  }

  .navbar .burger-menu {
    display: block;
  }
}

这样修改后,点击汉堡按钮就能正常触发导航栏的显示/隐藏切换,控制台的报错也会消失。

内容的提问来源于stack exchange,提问作者Amalia S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:21:04