如何仅在myHeader DIV存在时运行指定JS滚动固定导航栏代码
解决方案
直接在代码中加入对myHeader元素存在性的判断,只有当元素存在时才初始化滚动监听和相关逻辑,避免因元素不存在导致的报错。修改后的代码如下:
<script> var header = document.getElementById("myHeader"); // 仅当header元素存在时执行后续逻辑 if (header) { var sticky = header.offsetTop; window.onscroll = function() { myFunction() }; function myFunction() { if (window.pageYOffset > sticky) { header.classList.add("sticky-solution"); } else { header.classList.remove("sticky-solution"); } } } </script>
关键修改点:
- 先获取
header元素,通过if (header)判断元素是否存在(getElementById找不到元素会返回null,在条件判断中会被视为false) - 将滚动事件绑定、
sticky变量初始化以及myFunction的定义都包裹在判断语句内部,确保只有元素存在时才执行这些操作 - 无
myHeader的页面中,这段代码不会执行任何逻辑,也就不会触发"无法读取offsetTop属性"之类的错误
内容的提问来源于stack exchange,提问作者virs90
相关产品推荐
相关产品推荐

