javascript - js定时器 页面载入直接先执行一次是怎么回事?不应该是间隔时间以后才执行吗

 倒叙的时光_SX_126 发布于 2022-11-09 20:30
   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 个回答
  • 666大神好多啊。以后得经常逛逛!哈哈哈

    2022-11-12 01:50 回答
  • 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)
    })
    2022-11-12 01:50 回答
  • 我猜,这样的代码,在没有 hover 的时候,并不能工作。

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

    time=setInterval(autoImg(),2000);
    2022-11-12 01:50 回答
  • setInterval会立即执行一次,然后再间隔执行。把autoImg执行顺序改一下。

    var autoImg = function() {
        turnImg();
        listLeft=listLeft-770;
        console.log("auto");
    };
    2022-11-12 01:50 回答
  • 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)
    })
    2022-11-12 01:50 回答
  • https://developer.mozilla.org...
    setInterval的第一个参数需要时一个函数或是一个字符串。time=setInterval(autoImg(),2000);这样调用意思是把autoImg()的返回值作为其第一个参数,自然就立即执行一次了。

    2022-11-12 01:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有