2011-08-14 11 views
0

これは動作しない単純なローテーションスクリプトです。それには4つのアラートがあります:currentImage、1,2,3。FFでは4つのアラートを通過して停止します。 Chromeでは、5つまで進みます。両方のブラウザで画像が1回だけ変更されます。シンプルなJavascriptイメージローテーションが正しくループしていません

function rotateImages(currentImage, id) { 
    var dir = "/images/"; 
    var a = new Array("coolspider1.jpg", "coolspider2.jpg", "coolspider3.jpg"); 

    var b = document.getElementById(id); 

    if(currentImage >= a.length){ 
    currentImage=0;} 

//loop stops here in ff 

alert(a[currentImage]); 

//loop stops here in chrome 

b.src = dir + a[currentImage]; 
alert(1); 

currentImage++; 
alert(2); 

rotator = window.setTimeout("rotateImages(" + currentImage + "," + id + ")",500); 
alert(3); 
} 

答えて

1

問題の多くはここにあります:

  • あなたはgetElementByIdをするたびにあまりにも多くのDOMにアクセスしています。代わりに要素を渡します。
  • 毎回同じアレイを作成しています。 var a = new Array(...)は一度作成できます。
  • 、あなたが何かのためにアラートを使用している、代わりに単純なループで、不気味for(i;etc..) setTimeout(func, 500 + i*500, params...)
  • をsetTimeoutを使用しているcurrentImage
  • に割り当てることはありません...ない

必ず交換してください:

window.setTimeout("rotateImages(" + currentImage + "," + id + ")",500); 

と:

window.setTimeout(rotateImages,500, currentImage, id); 

setTimeoutは、... wellパラメータの任意のパラメータをとります。

関連する問題