为什么我在jQuery中遇到这个错误?

时间:2015-09-29 16:53:46

标签: javascript jquery html css

我有代码:

jQuery(window).scroll(function() {

     var scroll = jQuery(window).scrollTop();
     //scroll_break = parseInt($(".header-container").height());
     console.log( "pozitie scroll",scroll);
    // console.log( "scroll_break",scroll_break );


     var elem = $(".header-wrapper");
     if (elem.hasClass ("class")) {
         alert("sss");
      }else{
 alert("sssa");
      }
});

当我运行此代码时收到以下错误(我已在下面附上截图以了解)

enter image description here

这是错误:

Uncaught TypeError: Cannot read property 'hasClass' of null

从这个错误发生了什么?

提前致谢!

编辑:

我创建了一个示例here

4 个答案:

答案 0 :(得分:1)

这意味着elem实际上不是一个元素。我猜测.header-wrapper不是HTML中存在的实际类

在您的浏览器javascript控制台中,输入$(".header-wrapper")并按Enter键应返回所有匹配元素的数组,以便您进行检查。

为确保不会出现此错误,您应该更改if语句:

if (elem.length && elem.hasClass("class")) {

elem.length部分在您调用.hasClass()之前检查它是否存在。

答案 1 :(得分:1)

我怀疑$可能在另一个图书馆的其他图书馆中被使用,这就是您使用jQuery(window)而不是$(window)

的原因

尝试:

var elem = jQuery(".header-wrapper");

答案 2 :(得分:0)

Javascript认为,您希望获得elem变量的属性。那是因为你在函数名和参数的()之间做了一个空格。去掉它!

错误消息说,elem为空,因此上面一行中的jquery选择器没有找到任何内容。如果存在具有类header-wrapper的元素,请查看您的代码。

jQuery(window).scroll(function() {

     var scroll = jQuery(window).scrollTop();
     console.log( "pozitie scroll",scroll);

     elem = $(".header-wrapper");
     if (elem.hasClass("class")) { //Without whitespace
         alert("sss");
      }else{
         alert("sssa");
      }
});

答案 3 :(得分:0)

你也可以发布html文件吗? b'coz js代码是完美的,html代码必须有一些问题,一些类名或什么的。