Javascript setTimeout/setInterval(脚本setTimeout/setInterval)
本文介绍了脚本setTimeout/setInterval的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
正在尝试为测试网页制作一个小幻灯片。我搞不懂为什么这段代码不能工作(我对Java不是很有经验,我主要是在处理Java,Java脚本非常令人沮丧)。另外,我想补充的是,它确实开始运行,它将在几秒钟后切换到第三张图片,然后它停止,永远不再切换。
var backgroundElement = document.getElementById("innerContent");
var minibarImage1 = document.getElementById("pic1");
var minibarImage2 = document.getElementById("pic2");
var minibarImage3 = document.getElementById("pic3");
minibarImage1.onmouseover = function(){
backgroundElement.style.backgroundImage="url('images/frontpage/maintenance_01.jpg')";
};
minibarImage2.onmouseover = function() {
backgroundElement.style.backgroundImage ="url('images/frontpage/natural_steps_01.jpg')";
};
minibarImage3.onmouseover = function() {
backgroundElement.style.backgroundImage = "url('images/frontpage/twnshp_bdg_01b.jpg')";
};
function slideshow() {
setTimeout(function(){backgroundElement.style.backgroundImage= "url('images/frontpage/maintenance_01.jpg')";}, 2000);
setTimeout(function(){backgroundElement.style.backgroundImage = "url('images/frontpage/natural_steps_01.jpg')";}, 2000);
setTimeout(function(){backgroundElement.style.backgroundImage = "url('images/frontpage/twnshp_bdg_01b.jpg')";}, 2000);
}
window.onload = setInterval(function(){slideshow();}, 8000);
推荐答案
我已经指出:
window.onload = setInterval(function(){slideshow();}, 8000);
应该是这样的:
window.onload = function(){
setInterval(function(){slideshow();}, 8000);
}
window.onload
存储函数。setInterval
返回该间隔的ID,以便您可以选择停止它。
setTimeout
不会暂停程序的执行。因此,您对setTimeout
的连续调用都是同时执行的--在调用slideshow
两秒钟后执行。
您可以尝试嵌套回调函数,如下所示:
function slideshow (){
setTimeout(function(){
backgroundElement.style.backgroundImage= "url('images/frontpage/maintenance_01.jpg')";
setTimeout(function(){
backgroundElement.style.backgroundImage = "url('images/frontpage/natural_steps_01.jpg')";
setTimeout(function(){
backgroundElement.style.backgroundImage = "url('images/frontpage/twnshp_bdg_01b.jpg')";
slideshow();
}, 2000);
}, 2000);
}, 2000);
}
slideshow();
可能有一种更优雅的方法,但您明白了。
编辑:
这样可能更优雅:
function slideshow() {
setTimeout (function(){backgroundElement.style.backgroundImage = "uri";}, 2000);
setTimeout (function(){backgroundElement.style.backgroundImage = "uri";}, 4000);
setTimeout (function(){backgroundElement.style.backgroundImage = "uri";}, 6000);
setTimeout (slideshow, 8000);
}
将秒替换为2。您甚至可以通过添加URL和时间步长参数数组来使幻灯片功能更加模块化,以便您可以在一组URL上迭代setTimeout
函数。
有点像这样(伪代码)
function slideshow (urls, timestep){
var i = 0;
for (; urls[i]; i++)
setTimeout (function(){ backgro... = urls[i];}, timestep * i);
setTimeout (slideshow, timestep * i);
}
slideshow (["url1", "url2", "url3"], 2000);
这篇关于脚本setTimeout/setInterval的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:脚本setTimeout/setInterval
基础教程推荐
猜你喜欢
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 动态更新多个选择框 2022-01-01
- 在for循环中使用setTimeout 2022-01-01