Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 为什么我导航的最后一个子项是“我的”;ScrollSpy“;返回未定义值的函数?_Jquery_Scroll_Scrolltop - Fatal编程技术网

Jquery 为什么我导航的最后一个子项是“我的”;ScrollSpy“;返回未定义值的函数?

Jquery 为什么我导航的最后一个子项是“我的”;ScrollSpy“;返回未定义值的函数?,jquery,scroll,scrolltop,Jquery,Scroll,Scrolltop,我有一个我们都见过的导航菜单,它根据当前滚动位置添加/删除一个类 到目前为止,一切都运行得非常好,但是内容和导航中的最后一个“部分”返回了一个未定义的值,而其余部分的行为都是正确的 这里有一个到舞台网站的链接 下面是我使用的JQuery: var $sections = $('hgroup'); var $sectionsHead = $('hgroup h2'); var $navs = $('.faq-sidebar a'); var topsArray = $sections.map(

我有一个我们都见过的导航菜单,它根据当前滚动位置添加/删除一个类

到目前为止,一切都运行得非常好,但是内容和导航中的最后一个“部分”返回了一个未定义的值,而其余部分的行为都是正确的

这里有一个到舞台网站的链接

下面是我使用的JQuery:

var $sections = $('hgroup');
var $sectionsHead = $('hgroup h2');
var $navs = $('.faq-sidebar a');

var topsArray = $sections.map(function(){
    return $(this).position().top + 238;
}).get();

var len = topsArray.length;
var currentIndex = 0;

var getCurrent = function( top ) {
    for(var i = 0; i < len; i++) {
        if (top > topsArray[i] && topsArray[i+1] && top < topsArray[i+1] ) {
            return i;
        }
    }
};

$(window).scroll(function(e){
    var scrollTop = $(this).scrollTop();
    var checkIndex = getCurrent(scrollTop);;
    if (checkIndex !== currentIndex) {
        currentIndex = checkIndex;
        $navs.eq(currentIndex).addClass('active').siblings('.active').removeClass('active');
        $('hgroup h2').removeClass('active');
        $sectionsHead.eq(currentIndex).addClass('active');
        // console.log(alert(currentIndex));
    }
});
var$sections=$('hgroup');
变量$sectionsHead=$('hgroup h2');
变量$navs=$('.faq侧栏a');
var topsArray=$sections.map(函数(){
返回$(this).position().top+238;
}).get();
var len=topsArray.length;
var currentIndex=0;
var getCurrent=函数(顶部){
对于(变量i=0;itopsArray[i]&&topsArray[i+1]&&top
谢谢你的帮助

问题出在

if (top > topsArray...) 
由于表达式的求值而导致的行

将行更改为:

if  ( top > topsArray[i] && (!topsArray[i+1] || top < topsArray[i+1]) )
if(top>topsArray[i]&(!topsArray[i+1]| | top
将其作为三元表达式进行计算可以解决这个问题