无法读取null的属性'offsetTop'(粘性导航栏)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法读取null的属性'offsetTop'(粘性导航栏)相关的知识,希望对你有一定的参考价值。

JS代码:

window.onscroll = function() {myFunction();};

var navbar = document.getElementById("navbar");
var sticky = navbar.offsetTop;

function myFunction() {
  if (window.pageYOffset >= sticky) {
    navbar.classList.add("sticky");
  } else {
    navbar.classList.remove("sticky");
  }
}

这有什么问题?我发现了一个粘性导航的w3school示例。在控制台中显示:

未捕获的TypeError:无法读取null的属性'offsetTop'

答案

它看起来无法找到id为"navbar"的任何元素。

这可能是因为没有一个id为"navbar"的元素。

或者,如果您有一个名为"navbar"的元素,则此代码可能在页面加载完成之前运行。解决此问题的最简单方法是将javascript放在页面底部。或者,您可以使用jQuery的$(document).ready,或this question的其中一种香草替代品。

另一答案

因为您的演示不是名为'navbar'的元素

您应该在html代码中创建类似此div的标记

 <div id='navbar'></div>

以上是关于无法读取null的属性'offsetTop'(粘性导航栏)的主要内容,如果未能解决你的问题,请参考以下文章

javascript 20180521 slickのエラー(无法读取属性'add'的null)

markdown API:Google:未捕获TypeError:无法读取null的属性'offsetWidth'

量角器“ - 失败:无法读取null的属性'ver'

Highcharts-TypeError:无法读取null的'isResponsiveOptions'属性

node.js / discord.js:TypeError:无法读取null的属性'setPresence'

从表中删除行(无法读取null的属性'data')