未捕获的TypeError:无法读取未定义的属性顶部

时间:2017-03-01 10:04:17

标签: javascript jquery html

我的代码总是给我这个错误:

  

未捕获的TypeError:无法读取未定义的属性“top”

你可以帮我解决这个问题吗?这是我的代码:

autopostback = true

这是html代码:

autopostback = true

抱歉,如果没有html代码发布它

2 个答案:

答案 0 :(得分:1)

由于并非所有链接都将其href值作为有效的CSS选择器,因此在访问position之前,您必须检查是否已选择某些内容。试试这个:

$('.header-body a').each(function () {
    var currLink = $(this);
    var refElement = $(currLink.attr("href"));

    if(!refElement.length) return;  // if the length is 0 (nothing selected) skip the rest of this iteration where the accessing of the position happens

    if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
        $('.header-body a').removeClass("active");
        currLink.addClass("active");
    } else {
        currLink.removeClass("active");
    }
});

答案 1 :(得分:0)

position()返回undefined,因此没有&#34; top&#34;属性。 答:您的选择器导致错误。

要解决此问题,您可以测试refElement.position()是否为真undefined

检查出来:

$('woobaloobadubdub')
Returns: []

$('woobaloobadubdub').position()
Returns: undefined

$('woobaloobadubdub').position().top
Returns: Uncaught TypeError: Cannot read property 'top' of undefined(…)