滚动导航栏 - 未捕获TypeError:无法读取未定义的属性“top”

时间:2015-08-04 09:32:42

标签: javascript jquery html scroll undefined

我在我的网站的console.log中收到错误

<!-- Navigation buttons --> <div class="collapse navbar-collapse navbar-right"> <ul class="nav navbar-nav"> <li class="scroll active"><a href="#home">Home</a></li> <li class="scroll"><a href="#services">Solutions</a></li> <li class="scroll"><a href="#features">Featured</a></li> <li class="scroll"><a href="#customers">Customers</a></li> <li class="scroll"><a href="#partners">Partners</a></li> <li class="scroll"><a href="#about">About</a></li> <li class="scroll"><a href="#meet-team">Team</a></li> <li class="scroll"><a href="#blog">Blog</a></li> <li class="scroll"><a href="#get-in-touch">Contact</a></li> </ul> </div>

如果有人可以查看我已经获得的代码并帮我找到问题。

当前代码:

HTML(导航栏)

// Navigation Scroll
$(window).scroll(function(event)
{
    Scroll();
});

$('.navbar-collapse ul li a').on('click', function()
{
    $('html, body').animate(
    {
        scrollTop: $(this.hash).offset().top - 5
    }, 1000);
    return false;
});

// User define function
function Scroll()
{
    var contentTop = [];
    var contentBottom = [];
    var winTop = $(window).scrollTop();
    var rangeTop = 200;
    var rangeBottom = 500;
    $('.navbar-collapse').find('.scroll a').each(function()
    {
        contentTop.push($($(this).attr('href')).offset().top);
        contentBottom.push($($(this).attr('href')).offset().top + $($(this).attr('href')).height());
    })
    $.each(contentTop, function(i)
    {
        if (winTop > contentTop[i] - rangeTop)
        {
            $('.navbar-collapse li.scroll').removeClass('active').eq(i).addClass('active');
        }
    })
};

JavaScript和JQuery

{{1}}

1 个答案:

答案 0 :(得分:2)

当您将this.hash作为选择器传递时,其含义为

$( '#about' );

这是一个id选择器。但是你没有id="about"的元素,所以没有选择任何元素。

两种可能的解决方案:或者您在所有需要的元素上提供set id,或者使用属性选择器:

$('[href="' + this.hash + '"]')