2013-04-09 16 views
0

我有一個導航菜單我們都見過,就是添加/基於當前的滾動位置的除去一類。爲什麼我的「ScrollSpy」函數中導航的最後一個孩子返回一個未定義的值?

一切工作奇妙到目前爲止,但無論是在內容和導航的最後一個「節」將返回undefined值,其餘的則在正確的事行爲。

這裏是一個舞臺網站的鏈接。

http://sites.atjayjo.com/cozy-two/frequently-asked-questions.php

這裏是我使用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)); 
    } 
}); 

感謝您的幫助!

回答

0

的問題是在

if (top > topsArray...) 

線由於表達的評價。

更改行:

if (top > topsArray[i] && (!topsArray[i+1] || top < topsArray[i+1])) 

和作爲三元表達修復此評估它。

相關問題