简单Javascript图像旋转未正确循环

简单Javascript图像旋转未正确循环,javascript,rotation,Javascript,Rotation,这是一个不起作用的简单旋转脚本。它有四个警报:currentImage、1、2和3。在FF中,它经过四次警报并停止。在铬合金中,它经过五次。图像在两种浏览器中只更改一次 function rotateImages(currentImage, id) { var dir = "/images/"; var a = new Array("coolspider1.jpg", "coolspider2.jpg", "coolspider3.jpg"); var b = document.g

这是一个不起作用的简单旋转脚本。它有四个警报:currentImage、1、2和3。在FF中,它经过四次警报并停止。在铬合金中,它经过五次。图像在两种浏览器中只更改一次

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);
}

这里有很多问题:

  • 每次使用getElementById访问DOM的次数太多。而是传递元素
  • 每次都创建相同的数组<代码>变量a=新数组(…)可以创建一次
  • 您从未分配给
    currentImage
  • 对于(i;等)setTimeout(func,500+i*500,params…),您使用setTimeout的方式很奇怪,而不是一个简单的循环,
  • 您正在使用警报进行某些操作。。。不确定
替换:

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

获取…的可选参数。。。嗯,参数

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