鱼C论坛

 找回密码
 立即注册
查看: 2922|回复: 4

[已解决]求大神帮忙看下我这个轮播图为什么会延迟3秒执行的

[复制链接]
发表于 2019-12-18 17:10:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
$(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秒才重新开始轮播
小弟初学...基础不扎实,还望说明下原理
最佳答案
2019-12-19 09:27:58
qina10 发表于 2019-12-19 09:07
这个我知道,但是这个循环定时器不应该是直接执行的吗?为什么一次循环前后会有3秒左右的时间画面是停止 ...

Snip20191219_78.png


如上图所示,产生了“闭包”效果,在一个函数内部调用自身...

结合定时器,所以会循环前后都有 3s 停止
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-12-19 08:16:15 | 显示全部楼层
因为设置 time 为 3s 啦:
var time = 3000;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-19 09:07:31 | 显示全部楼层
不二如是 发表于 2019-12-19 08:16
因为设置 time 为 3s 啦:

这个我知道,但是这个循环定时器不应该是直接执行的吗?为什么一次循环前后会有3秒左右的时间画面是停止不动的  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-19 09:27:58 | 显示全部楼层    本楼为最佳答案   
qina10 发表于 2019-12-19 09:07
这个我知道,但是这个循环定时器不应该是直接执行的吗?为什么一次循环前后会有3秒左右的时间画面是停止 ...

Snip20191219_78.png


如上图所示,产生了“闭包”效果,在一个函数内部调用自身...

结合定时器,所以会循环前后都有 3s 停止
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-26 14:02:00 | 显示全部楼层
记录下处理的结果:经过几天的研究和试验,我发现实际上setInterval实际上并不是马上运行的,而是等待时间到后才运行的。也就是说我们上面设置的time是3000,就是3000毫秒后运行,6000毫秒后再次运行,以此类推。至于说第二次循环的时候会出现3秒的停滞期,实际上是因为图片的张数没设置对,因为多出来了一张图片,所以出现了3秒的停止。最后我的处理方式是:先执行一次轮播,然后再调用setinterval定时器,获取length改成length-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 01:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表