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,哪里出错了吗
666大神好多啊。以后得经常逛逛!哈哈哈
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) })
我猜,这样的代码,在没有 hover 的时候,并不能工作。
你没觉得你写的这两句什么不同吗?
time=setInterval(autoImg(),2000);
setInterval会立即执行一次,然后再间隔执行。把autoImg执行顺序改一下。
var autoImg = function() { turnImg(); listLeft=listLeft-770; console.log("auto"); };
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) })
https://developer.mozilla.org...setInterval
的第一个参数需要时一个函数或是一个字符串。time=setInterval(autoImg(),2000);
这样调用意思是把autoImg()
的返回值作为其第一个参数,自然就立即执行一次了。