未捕获的TypeError: Cannot read property 'top'的定义

Uncaught TypeError: Cannot read property 'top' of undefined

本文关键字:定义 top property Cannot TypeError read      更新时间:2023-09-26

对不起,我的英语不好,但是我有一个问题。

这是我的留言:

Uncaught TypeError: Cannot read property 'top' of undefined 

下面是我的函数:

    function onScroll(event){
        var scrollPos = $(document).scrollTop();
        $('#menu-center a').each(function () {
            var currLink = $(this);
            var refElement = $(currLink.attr("href"));
            if (refElement.position().top<= scrollPos && refElement.position().top + refElement.heig
ht() > scrollPos) {
                $('#menu-center ul li a').removeClass("active");
                currLink.addClass("active");
            }
            else{
                currLink.removeClass("active");
            }
        });
    }

我不明白,因为我在本地有另一个页面使用这个函数,它工作得很好。

我在网上搜索了,但没有任何符合我问题的。

谢谢你的帮助

改变这一行:var refElement = $(currLink.attr("href"));var refElement = $(currLink).attr("href");

我找到了解决上述问题的方法。参见下面的代码片段

jQuery(document).ready(function($) {
  $(document).on("scroll", onScroll);
});
function onScroll(event){
  var scrollPos = $(document).scrollTop();
  $('#menu-center a').each(function () {
        var currLink = $(this);
        var refElement = currLink.attr("href");
        var splitEle = refElement.split('#');
        if ($("#"+splitEle[1]).offset().top <= scrollPos && $("#"+splitEle[1]).offset().top + $("#"+splitEle[1]).height() > scrollPos) {
            $('#menu-center ul li').removeClass("active");
            currLink.parent().addClass("active");
        }else{
            currLink.parent().removeClass("active");
        }
    });
}