本文详解如何通过 JavaScript 动态控制 document.body.style.overflow 实现子菜单打开时禁用页面滚动、关闭时恢复,重点排查因 DOM 元素缺失(如 #navbar 未定义)导致的脚本报错,并提供健壮、可复用的实现方案。
本文详解如何通过 javascript 动态控制 `document.body.style.overflow` 实现子菜单打开时禁用页面滚动、关闭时恢复,重点排查因 dom 元素缺失(如 `#navbar` 未定义)导致的脚本报错,并提供健壮、可复用的实现方案。
在构建响应式侧边导航或登录弹出菜单时,一个常见且关键的用户体验细节是:当子菜单(如右滑面板)展开时,应禁用背景页面的滚动,防止内容错位或视觉干扰;菜单关闭后,需立即恢复滚动能力。你提供的代码逻辑基本正确,但存在一个典型的 DOM 操作隐患——引用了不存在的元素,直接导致脚本中断。
? 根本问题:无效的 DOM 查询引发运行时错误
你的 JavaScript 中包含这一行:
var navbar = document.getElementById("navbar");
navbar.classList.remove("sticky"); // ❌ 报错:Cannot read property 'classList' of null
然而 HTML 片段中并未定义 id="navbar" 的元素,只有










