为了账号安全,请及时绑定邮箱和手机立即绑定

请问鼠标不断移入,轮播会加速,是什么原因?

请问鼠标不断移入,轮播会加速,是什么原因?

慕婉清0895596 2017-09-20 16:06:52
function byId(id){ return typeof(id)==="string"?document.getElementById(id):(id); } var index=0, pics=byId("banner").getElementsByTagName("div"), len=pics.length, timer=null; function slideImg(){ var main=byId("main"); //鼠标放置,轮播停止 main.onmouseover=function(){ } //鼠标离开,进行轮播 main.onmouseout=function(){ timer=setInterval(function(){ index++; if(index>=len){ index=0; } //图片切换 changeImg(); },3000) } main.onmouseout(); } function changeImg(){ for(var i=0;i<len;i++){ pics[i].style.display="none"; } //鼠标离开时,给索引添加display属性 pics[index].style.display="block"; } slideImg();
查看完整描述

4 回答

?
sheshunjiang

TA贡献11条经验 获得超2个赞

解决方案:移出前需要先清除定时器(clearInterval(timer))。

解析:如果在鼠标移出时,没有清除定时器,那么移出的时候,就会又开一个定时器。所以轮播会加快。

查看完整回答
反对 回复 2017-09-27
?
NicholasCZakas

TA贡献3条经验 获得超0个赞

楼上说的都有道理!同意

查看完整回答
反对 回复 2017-09-27
?
小羊杨

TA贡献24条经验 获得超44个赞

没有清除定时器,多个定时器导致速度被加倍了。

查看完整回答
反对 回复 2017-09-26
?
Gotta

TA贡献53条经验 获得超16个赞

在 onmouseover 里有吧timer移除掉吗, 如果没有,鼠标每次放进去都会生成一个新的定时器,变成同时有好几个定时器在跑 当然越来越快了

查看完整回答
反对 回复 2017-09-21
  • 慕婉清0895596
    慕婉清0895596
    那如果把timer移除了,用什么接收setInterval的返回值啊?
  • Gotta
    Gotta
    移除指clearInterval(timer), 让这个计时器不再工作。 如果不移除,即使timer被赋值成新的计时器,旧的那个还是存在并且在工作的。
  • 4 回答
  • 0 关注
  • 1349 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信