javascript - js定时器 页面载入直接先执行一次是怎么回事?不应该是间隔时间以后才执行吗
巴扎黑
巴扎黑 2017-04-11 12:40:06
[JavaScript讨论组]
   var autoImg = function() {
        listLeft=listLeft-770;
        console.log("auto");
        turnImg();
    };
    var time=null;
     time=setInterval(autoImg(),2000);
    $(".banner").hover(function () {
        clearInterval(time);
    },function () {
        time=setInterval(autoImg,2000)
    })

这是一个轮播图,页面进去直接就跳到第二张图了,日志输出auto,哪里出错了吗

巴扎黑
巴扎黑

全部回复(6)
伊谢尔伦

https://developer.mozilla.org...
setInterval的第一个参数需要时一个函数或是一个字符串。time=setInterval(autoImg(),2000);这样调用意思是把autoImg()的返回值作为其第一个参数,自然就立即执行一次了。

阿神
var autoImg = function() {
    listLeft=listLeft-770;
    console.log("auto");
    turnImg();
};
var time=null;
time=setInterval(autoImg(),2000);  // 这一句引起的,一进页面就设置了定时器,把这句去掉就可以了
$(".banner").hover(function () {
    clearInterval(time);
},function () {
    time=setInterval(autoImg,2000)
})
怪我咯

setInterval会立即执行一次,然后再间隔执行。把autoImg执行顺序改一下。

var autoImg = function() {
    turnImg();
    listLeft=listLeft-770;
    console.log("auto");
};
PHP中文网

我猜,这样的代码,在没有 hover 的时候,并不能工作。

你没觉得你写的这两句什么不同吗?

time=setInterval(autoImg(),2000);
天蓬老师
var autoImg = function() {
    listLeft=listLeft-770;
    console.log("auto");
    turnImg();
};
var time=null;
time=setInterval(autoImg,2000);  // 看这一句,不能有括号,右括号就直接执行了 !!!
$(".banner").hover(function () {
    clearInterval(time);
},function () {
    time=setInterval(autoImg,2000)
})
大家讲道理

666大神好多啊。以后得经常逛逛!哈哈哈

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号