javascript - “循环”JavaScript 函数

标签 javascript html web

我有以下脚本。

function slideShow1(){
    document.getElementById('dynimg').src="Other/noctis.jpg";
    var timer1 = setTimeout(slideShow2(),5000);
}

function slideShow2(){
    document.getElementById('dynimg').src="Other/retriever.jpg";
    var timer2 = setTimeout(slideShow3(),5000);
}

function slideShow3(){
    document.getElementById('dynimg').src="Other/miningop2.jpg";
    var timer3 = setTimeout(slideShow1(),5000);
}

这很粗糙,我知道...而且它也不起作用。这个想法是让每个函数在给定时间段后触发下一个函数,因此创建一个幻灯片,其中和 img 重复更改。我正在尝试使用 body onload="slideShow1()"

最佳答案

那些括号导致您的函数立即执行。

setTimeout(<b>slideShow2()</b>, 5000);

因此,您认为您正在将您的函数传递给setTimeout,但实际上您正在执行您的函数并传递它的返回值(在本例中为未定义)。

因此,您的函数会立即被调用,并且 setTimout 五秒后没有任何内容可执行。

只需删除括号:

function slideShow1(){
    document.getElementById('dynimg').src = "Other/noctis.jpg";
    setTimeout(slideShow2, 5000);
}

function slideShow2(){
    document.getElementById('dynimg').src = "Other/retriever.jpg";
    setTimeout(slideShow3, 5000);
}

function slideShow3(){
    document.getElementById('dynimg').src = "Other/miningop2.jpg";
    setTimeout(slideShow1, 5000);
}

关于javascript - “循环”JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17579031/

相关文章:

c# - AES 计数器模式 C# 等效

javascript - 运行 Protractor 测试后将报告保存到数据库中

javascript - 我可以将 Firefox 中的 javascript 解释器用作 js shell 吗?

html - 当悬停在自身而不是父元素上时,元素保留父元素的悬停属性

javascript - 如何从ajax调用的php响应中创建数组的jquery对象

c# - 如何验证可编辑数据表中的列?

html - 在 html 中使用 css 的 boxsize

javascript - yii2 不起作用 $this->redirect

web-services - 将参数传递给 Web 服务器的两种方法之间的区别?

java - 2020 年后 Crystal Reports Viewer Flash 支持