JavaScript - setTimeout在for循环中不起作用

时间:2014-06-09 12:09:06

标签: javascript settimeout

对于大学我必须创建一个javascript幻灯片。 我使用函数setTimeout("其他函数",超时)。 我的问题是使用这个函数recursive(slideshow())可以工作,但是当我尝试在for循环中使用它时(altSlideshow())没有任何反应。

// this one works
function slideShow() {
    nextImg();
    setTimeout(slideShow, timeOut); //Angabe Timeout in Millisekunden
}

// this one doesn't work
function altSlideshow(){
    for(var x = 0; x <= 4; x++){
       setTimeout(nextImg(), timeOut);
    }
}

提前致谢!

2 个答案:

答案 0 :(得分:1)

这里有两个问题:

  • 您通过了nextImg()而非nextImg
  • 你安排了同一时刻的所有超时(你传递的延迟是从执行循环开始计算的)

更改

setTimeout(nextImg(), timeOut);

setTimeout(nextImg, timeOut*(x+1));

答案 1 :(得分:0)

我认为你想传递对函数的引用,而不是使用返回的值:

function altSlideshow(){
    for(var x = 0; x <= 4; x++){
       setTimeout(nextImg, timeOut);
    }
}

此外,正如破坏提及的那样,您应该使用x为每次迭代生成一个唯一的超时。