求大神帮忙看下我这个轮播图为什么会延迟3秒执行的
$(function(){// banner
var bannerbgimg = $(".banner .bannerbgi img");
var i = 1;
var time = 3000;
var set = function(){
bannerbgimg.eq(i).fadeIn(time).siblings().fadeOut(time);
if(i < bannerbgimg.length){
i += 1;
}else{
i = 0;
}};
var x = setInterval(set,time);
});
运行后要3秒后才执行,到最后一张图片的时候又要停3秒才重新开始轮播
小弟初学...基础不扎实,还望说明下原理{:5_96:} 因为设置 time 为 3s 啦:
var time = 3000; 不二如是 发表于 2019-12-19 08:16
因为设置 time 为 3s 啦:
这个我知道,但是这个循环定时器不应该是直接执行的吗?为什么一次循环前后会有3秒左右的时间画面是停止不动的{:5_99:} qina10 发表于 2019-12-19 09:07
这个我知道,但是这个循环定时器不应该是直接执行的吗?为什么一次循环前后会有3秒左右的时间画面是停止 ...
如上图所示,产生了“闭包”效果,在一个函数内部调用自身...
结合定时器,所以会循环前后都有 3s 停止 记录下处理的结果:经过几天的研究和试验,我发现实际上setInterval实际上并不是马上运行的,而是等待时间到后才运行的。也就是说我们上面设置的time是3000,就是3000毫秒后运行,6000毫秒后再次运行,以此类推。至于说第二次循环的时候会出现3秒的停滞期,实际上是因为图片的张数没设置对,因为多出来了一张图片,所以出现了3秒的停止。最后我的处理方式是:先执行一次轮播,然后再调用setinterval定时器,获取length改成length-1
页:
[1]