繁体   English   中英

Uncaught TypeError:无法读取未定义的属性“ top”-滚动错误?

[英]Uncaught TypeError: Cannot read property 'top' of undefined - Scrolling error?

这是我的HTML:

<ul class="nav-list">
   <li class="current"><a class="smoothscroll" href="#home" title="">Home</a></li>
    <li><a class="smoothscroll" href="signup.html" title="">Sign up</a></li>
    <li><a class="smoothscroll" href="signin.html" title="">Sign in</a></li>                
</ul>

这是我的JavaScript:

var ssSmoothScroll = function() {
    $('.smoothscroll').on('click', function (e) {
        var target = this.hash,
        $target    = $(target);

        e.preventDefault();
        e.stopPropagation();        

        $('html, body').stop().animate({
            'scrollTop': $target.offset().top
        }, cfg.scrollDuration, 'swing').promise().done(function () {
           // check if menu is open
           if ($('body').hasClass('menu-is-open')) {
               $('#header-menu-trigger').trigger('click');
           }

           window.location.hash = target;
        });
    });
};

我浏览了几个答案,但仍然找不到为什么我的系统无法正常工作。 任何帮助深表感谢。

我想继续访问signup.html或signin.html,但是如果单击它们,则两个链接均不起作用。 仅当我右键单击并在新选项卡中打开时,它们才起作用。

offset返回undefined的唯一原因是如果您在空的jQuery集合上调用它。 这样就告诉我们$(target)返回一个空的jQuery集,大概是因为target包含一个与任何元素都不匹配的选择器。

您可能想要添加一个保护措施以允许这样做:

if (!$target.length) {
    return;
}

...就在$target = ...之后


不过, smoothscroll一下HTML:您可能只想从将您带到另一个页面(示例中的后两个)的链接中删除smoothscroll类。 他们似乎唯一的目的是使跳转到页面滚动中的锚点而不是跳转。 由于这些链接不在页面上,因此我只是不会将课程放在第一位。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM