2011-10-02 4 views
0

私のコードで少し助けを得たいと思っていました。これはmoz/webkitでは動作しますが、ieでは動作しません。 IEのJavaScriptエラーの非常に寛容ではない理由:(スクロールのLIに「選択済み」クラスを追加するようIEに指示するにはどうすればよいですか?

$(window).trigger('hashchange'); 

// Add .selected class to nav on page scroll 
var $sections = $('section'); 
var $navs = $('nav > ul > li'); 
var topsArray = $sections.map(function() { 
    return $(this).position().top - 50; 
}).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; 

     } 
    } 
}; 

$(document).scroll(function(e) { 
    var scrollTop = $(this).scrollTop(); 
    var secondSection = topsArray[1]; 

    if(scrollTop <= 200) { // moved past the header 
     $navs.eq(0).removeClass("selected") 
    } else if(scrollTop >= 205 && scrollTop <= secondSection) { // between header and 2nd section 
     $navs.eq(0).addClass("selected") 
    } 
    var checkIndex = getCurrent(scrollTop); 
     if(checkIndex !== currentIndex) { 
      currentIndex = checkIndex; 
      $navs.eq(currentIndex).addClass("selected").siblings(".selected").removeClass("selected"); 
    } 

}); 
+0

IEのどのバージョン? –

答えて

1

私はかなり理解していないいくつか欠けているセミコロンを追加してみてください:。

if(scrollTop <= 200) { // moved past the header 
    $navs.eq(0).removeClass("selected"); //missing semicolon 
} else if(scrollTop >= 205 && scrollTop <= secondSection) { // between header and 2nd section 
    $navs.eq(0).addClass("selected"); //missing semicolon 
} 

それはIEだけで、その後、IEがトラブルの解析をしているしている場合あなたが問題に遭遇した場合、JsLintのようなデバッガでjsを実行してみてください。

+0

私はJSと仕事をしていて、糸くずを忘れています。最初に行った。 問題はセミコロンではありませんでしたが、ウィンドウスクロールを追跡するために使用していた方法でした。 $(document).scrollの代わりに$(window).scrollを使用していたはずです。 – Chris

関連する問題