我有以下脚本。
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()”
答案 0 :(得分:6)
这些括号会导致您的功能立即执行。
setTimeout(slideShow2(), 5000);
因此,您认为您将函数传递给setTimeout
,但实际上正在执行您的函数并传递其返回值(在这种情况下为undefined
)。
因此,您的函数会立即被调用,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);
}