Javascript显示一个接一个带有间隔的img
Javascript show imgs one by one with interval
我有下面的图像,我试图以3秒为间隔逐一显示它们,但我无法完成。它继续停留在0上,并且不显示图像,这将是一个很好的帮助:
<img src="one.png"></img>
<img src="two.png"></img>
javascript:
window.animate = function(){
var timer = '';
var imgs = document.getElementsByTagName('img');
for (var i = 0; i < imgs.length; i++) {
var timer = setInterval(function(){
alert(i);
imgs[i].style.display = 'block';
}, 3000);
if(i == imgs.length){
clearInterval(timer);
}
}
}
这可能就是您想要的:
window.animate = function(){
var imgs = document.getElementsByTagName('img');
var index = 0;
var timer = setInterval(function() {
// Hide all imgs
for (var i = 0; i < imgs.length; i++)
imgs[i].style.display = 'none';
// Display next img
imgs[index].style.display = 'block';
index++;
// Stop after all displayed.
if (index >= imgs.length)
clearInterval(timer);
}, 3000);
}
这里有一种方法:
Fiddle:http://jsfiddle.net/aecuappp/
HTML:
<img src="http://placehold.it/350x150"></img>
<img src="http://placehold.it/350x150"></img>
<img src="http://placehold.it/350x150"></img>
<img src="http://placehold.it/350x150"></img>
<img src="http://placehold.it/350x150"></img>
<img src="http://placehold.it/350x150"></img>
JS:
var imgs = document.getElementsByTagName('img');
var interval = 3000;
for (var i = 0; i < imgs.length; i++) {
(function (index, time) {
setTimeout(function() {
imgs[index].style.display = 'block';
}, time);
} (i, interval));
interval = interval + 3000;
}
CSS:
img {
display: none;
}
基本上,如果您希望第一个图像立即显示,您可以在0启动interval
。每次它都会增加3秒的超时时间,因为这些时间都是大致同时创建的。我将setTimeout
封装在IIFE中,以便为interval
和index
提供超时需要的范围,即我们创建超时时的值。
由于这些基本上都是同时超时的,因此需要对间隔实现回调模式以触发下一个间隔,或者需要增加每个索引的间隔;即,将计时器的间隔设置为3000*(i+1),这将有效地触发延迟加上前一延迟的下一个计时器。然而,这并没有考虑到实际的图像负载。此外,我会考虑使用setTimeout,因为您只需要做一次。
var img = $('img.targets');
for (var i=0;i<img.length;i++) {
var duration = 3000;
setTimeout( function() {
// do dom work here
}, duration*(i+1));
}
您可以通过使用setTimeout
排队等待一些超时,然后确保正确地将i
的值传递给中的函数来实现这一点。通过使用forEach
而不是常规循环,可以很容易地做到这一点:
window.animate = function() {
var imgs = document.getElementsByTagName('img');
imgs.forEach(function(img, i) {
setTimeout(function() {
img.style.display = 'block';
}, (i + 1) * 3000);
});
};
相关文章:
- 使用javascript或angularjs特定过滤器搜索字符串中第一个img标记的json值
- 如何在cycle2.js中悬停img时同时显示上一个/下一个按钮
- 如何在页面顶部放置一个绝对定位的img
- 我希望这个img类是一个按钮,当你点击它时,它会播放hello.mp3
- 从javascript对象中获取一个src-img,并将其放入HTML中
- 如何读取存储在图像的数据src中的URL,并在另一个img控制器的src中设置该URL onclick
- CSS在IMG周围添加一个胖“框架”,而不改变IMG的位置
- 使用 javascript 和正则表达式删除 HTML 字符串中的第一个 img 标记
- 如何通过ng-click更改另一个img上的ng-src
- 若页面上当前存在一个img src,则将类应用于该img
- Img滑块-下一个或上一个Img src基于“;点击“;img
- 创建一个img元素's src另一个元素's background-image
- 如何改变一个img与文本在innerHTML
- 删除点击另一个img/按钮后的onclick效果
- 你能加载一个img标签吗;s src在javascript文件中,然后将其绘制到画布上
- 使用fanybox rel=group上的一个img和jQuery img src更改
- Jquery 将 src 从一个 img 添加到另一个 img
- 在一个img src标签上显示不同格式的普通图像,以及base64图像
- 如何去下一个img元素的javascript
- 如何获得一个img元素的宽度和高度,其中宽度和高度没有设置