如何在Jquery中延迟for循环
我正在尝试制作图库,我正在使用for循环来加载所有图像。 但现在我遇到的问题是它的速度很快所以我想每次都延迟循环。
我试图设置超时,但这不起作用
有人知道如何使用Jquery延迟循环。
js代码:
function test(){ var src = 'img/nature/'; var img = ['1.jpg']; var image = [ "1.jpg", "2.jpg", "3.jpg",'4.jpg','5.jpg','6.jpg','7.jpg' ]; for ( var i = 0; i < image.length; i = i + 1 ) { $('#frame').append(''); $('.hide').show(500); setTimeout(function(){ },500); } }
我还有一个问题。 是否可以使用Jquery加载文件夹中的所有imag?
你也可以试试这个:
function test() { var src = 'img/nature/'; var img = ['1.jpg']; var image = [ '1.jpg', '2.jpg', '3.jpg','4.jpg','5.jpg','6.jpg','7.jpg' ]; setInterval(function() { $.each(image, function(index, value) { $('#frame').append(''); $('.hide').show(500); }); }, 500); }
最后将500改为任何……
但我怀疑这不是你想要做的……下面的方法可能是你想要的:
function test() { var src = 'img/nature/', img = ['1.jpg'], image = [ '1.jpg', '2.jpg', '3.jpg','4.jpg','5.jpg','6.jpg','7.jpg' ], maxIndex = (image.length - 1), cIndex = 0; setInterval(function() { if (cIndex == maxIndex) cIndex = 0; $('#frame').append(''); $('.hide').show(500); cIndex++; }, 500); }
而不是使用for循环,您可以使用递归函数
var src = 'img/nature/'; var img = ['1.jpg']; var image = [ "1.jpg", "2.jpg", "3.jpg",'4.jpg','5.jpg','6.jpg','7.jpg' ]; var i = 0; var showGallery = function(){ $('#frame').append(''); $('.hide').show(500); i++; if (i 0){ showGallery(); }
您的幻灯片放映时间仅为500毫秒。 增加该值
setTimeout(function(){},500); 在幻灯片中延迟。
并在循环内调用函数测试…以便幻灯片继续播放。
样品:
function slideit(){
if (!document.images) return 0 document.images.slide.src=eval("image"+step+".src") if (step<3) step++ else step=1 setTimeout("slideit()",3000)
}
另一种解决方案是使用临时范围来增加超时事件的时间值。
function test(){ var src = 'img/nature/'; var img = ['1.jpg']; var image = [ "1.jpg", "2.jpg", "3.jpg",'4.jpg','5.jpg','6.jpg','7.jpg' ]; for ( var i = 0; i < image.length; i++ ) { (function(i){ setTimeout(function(){ $('#frame').append(''); $('.hide').show(500); }, 500*i); })(i); } }