JavaScript-setTimeout不';不要在for循环中工作

JavaScript-setTimeout不';不要在for循环中工作,javascript,settimeout,Javascript,Settimeout,对于大学,我必须创建一个javascript幻灯片。 我使用函数setTimeout(“其他函数”,timeout)。 我的问题是使用这个递归函数(slideshow())是可行的,但是当我尝试在for循环(altSlideshow())中使用它时,什么都没有发生 // this one works function slideShow() { nextImg(); setTimeout(slideShow, timeOut); //Angabe Timeout in Milli

对于大学,我必须创建一个javascript幻灯片。 我使用函数setTimeout(“其他函数”,timeout)。 我的问题是使用这个递归函数(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);
    }
}
//这个有效
函数幻灯片(){
nextImg();
setTimeout(幻灯片放映,超时);//Angabe超时(单位:毫秒)
}
//这个不行
函数altSlideshow(){
对于(var x=0;x这里有两个问题:

  • 您传递的是
    nextImg()
    ,而不是函数
    nextImg
  • 将所有超时安排在同一时刻(通过的延迟是从循环执行的时间开始计算的)
改变

setTimeout(nextImg(), timeOut);


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

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