未捕获的TypeError:无法读取null的属性“ offsetTop”(导航栏)

时间:2018-11-30 12:36:19

标签: javascript jquery

这是我的代码

// Get the navbar
let navbar = document.getElementById("navigation");

// Get the offset position of the navbar
let sticky = navbar.offsetTop;

// Add the sticky class to the navbar when you reach its scroll position. Remove "sticky" when you leave the scroll position
function stickyNavigation() {
    if (window.pageYOffset >= sticky) {
        navbar.classList.add("-sticky");
    } else {
        navbar.classList.remove("-sticky");
    }
}

$(window).scroll(stickyNavigation);
stickyNavigation();

我有一些页面,没有导航栏,它显示错误“未捕获的TypeError:无法读取null的属性'offsetTop'”。如何为此做if / else语句?

我已经尝试过了:

    if (navbar.length > 0) {

    }

但是没有用。

2 个答案:

答案 0 :(得分:2)

如果在某些情况下没有导航栏,请使用如下语句:

if (navbar) {
//some statements
} else {...}

答案 1 :(得分:1)

您正在尝试访问null上的长度方法,这是不正确的。

if (navbar) {
//Do something
    } 

因为null是伪造的值,所以如果条件中没有任何导航栏元素,条件将自动失败。