首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >未捕获的TypeError:无法读取未定义的属性“”top“”

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

Stack Overflow用户
提问于 2013-11-24 21:35:05
回答 4查看 362.6K关注 0票数 110

如果这个问题已经回答了,我很抱歉。我尝试过寻找解决方案,但找不到适合我的代码的解决方案。我仍然是jQuery的新手。

我有两种不同类型的粘性菜单,用于两个不同的页面。下面是这两种方法的代码。

代码语言:javascript
复制
$(document).ready(function () {
    var contentNav = $('.content-nav').offset().top;
    var stickyNav = function () {
        var scrollTop = $(window).scrollTop();
        if (scrollTop > contentNav) {
            $('.content-nav').addClass('content-nav-sticky');
        } else {;
            $('.content-nav').removeClass('content-nav-sticky')
        }
    };
    stickyNav();
    $(window).scroll(function () {
        stickyNav();
    });
});
$(document).ready(function () {
    var stickyNavTop = $('.nav-map').offset().top;
    // var contentNav = $('.content-nav').offset().top;
    var stickyNav = function () {
        var scrollTop = $(window).scrollTop();
        if (scrollTop > stickyNavTop) {
            $('.nav-map').addClass('sticky');
            // $('.content-nav').addClass('sticky');
        } else {
            $('.nav-map').removeClass('sticky');
            // $('.content-nav').removeClass('sticky')
        }
    };
    stickyNav();
    $(window).scroll(function () {
        stickyNav();
    });
});

我的问题是,底部粘性侧边菜单的代码不起作用,因为代码var contentNav = $('.content-nav').offset().top;的第二行触发了一个错误,即“未捕获TypeError:无法读取未定义的属性‘顶部’”。事实上,除非将其他jQuery代码放在第二行的上方,否则它们根本不会工作。

经过研究,我认为问题在于$('.content-nav').offset().top找不到指定的选择器,因为它在不同的页面上。如果是这样的话,我找不到解决方案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-11-24 21:45:04

在尝试获取其偏移量之前,请检查jQuery对象是否包含任何元素:

代码语言:javascript
复制
var nav = $('.content-nav');
if (nav.length) {
  var contentNav = nav.offset().top;
  ...continue to set up the menu
}
票数 167
EN

Stack Overflow用户

发布于 2015-08-24 03:28:24

您最有可能遇到的问题是,页面中某处存在指向不存在的锚点的链接。例如,假设您有以下内容:

代码语言:javascript
复制
<a href="#examples">Skip to examples</a>

页面中必须有一个具有该id的元素,例如:

代码语言:javascript
复制
<div id="examples">Here are the examples</div>

所以要确保页面内的每个链接都与其对应的锚点相匹配。

票数 13
EN

Stack Overflow用户

发布于 2017-03-22 23:02:09

我遇到了同样的问题(“未捕获TypeError:无法读取未定义的属性'top‘”)

我尝试了我能找到的所有解决方案,但没有任何帮助。但后来我发现我的DIV有两个身份证。

所以,我删除了第二个ID,它起作用了。

我只希望有人早点告诉我检查我的身份证))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20175094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档