2011-07-23 11 views
0

jsファイルには2つの関数があります.1つはプレーンなjavascriptで、もう1つはjQueryです。私は両方のウィンドウの負荷で動作するようにします。しかし、両方を有効にすると、プレーンなJavaScript関数だけが動作します。私が "highliter"機能を無効にしたとき、 "slideSwitch"はうまくいきます。何が問題ですか?これをどうすれば解決できますか?実装されたファイル内の関数は1つだけです

function slideSwitch() {   
    var active = $('#slideshow img.active'), 
    next; 

    if (active.length == 0){ 
     active = $('#slideshow img:last'); 
    }; 

    next = active.next().length ? active.next() : $('#slideshow img:first'); 

    active.addClass('last-active'); 

    next.addClass('active') 
     .css({opacity:0.0}) 
     .animate({opacity:1.0}, 1000, function() {    
      active.removeClass('active last-active'); 
     }); 
}; 


function startSlideShow() { 
    setInterval("slideSwitch()", 5000); 
}; 


function highliter() { 
    var current = document.location.pathname; 
    var nav = document.getElementById('pages'); 
    var a_tags = nav.getElementsByTagName('a'); 
    for (var i = 0; i <= a_tags.length; i++) { 
     if (a_tags[i].getAttribute('href') === current) { 
      a_tags[i].parentElement.className = 'highlited'; 
     } 
    } 
}; 


window.onload = function() { 
    highliter(); 
    startSlideShow(); 
}; 
+0

なぜハイライター用にJQueryを使用していないのか尋ねる必要があります。 JQとJSが同じファイルで動作してはならない理由はないので、JSには明らかに問題があります。 –

答えて

1

highliter()にjavascriptエラーが発生していますか?私は2つの可能性の問題を参照してください。

  1. あなたは、ループのためにあなたは、配列のサイズを超えているという意味ではなく、<長の< =長さをチェックしています。
  2. idに 'pages'というIDを持つ要素がページ上にないことがわかりました。これは、navがnullであり、navの後続のアクセスがnull参照になることを意味します。
1

parentElementではありません。parentNodeです。

関連する問題