设置了清除定时器,为什么但是鼠标放在上面还是会继续轮播?

设置了清除定时器,为什么但是鼠标放在上面还是会继续轮播?

function byId(id){
    return typeof(id) ==="string"? document.getElementById(id):id;
}
var index =0,
    timer=null;
    pics =document.getElementsByClassName('banner-slide')
    len=pics.length;
    console.log(len);
function slideImg(){
    var main=byId("main");
    main.onmouseover=function(){
        if(timer) clearInterval(timer);
    }
    main.onmouseout=function(){
        var timer =setInterval(function(){
            index++;
            if(index>=len){
                index=0;
            }
            changeImg(index);
        },3000);
    }
    main.onmouseout();
}
function changeImg(){
    for(var i=0;i<len;i++){
        pics[i].style.display='none';
    }
    pics[index].style.display='block';
}
slideImg();

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

main.onmouseout=function(){
        var timer =setInterval(function(){
            index++;
            if(index>=len){
                index=0;
            }

这一段里 你定义了一个局部的timer 然后把定时器赋值给了他

但是你清除定时器的时候 清除的是全局的timer

所以局部的定时器并没有被清除

所以会继续播放

  • Riokson #1
    把var timer中的 var去掉就应该可以了
    2018-05-04 12:40:40
  • qq_卡几玛_04415321 提问者 回复 Riokson #2
    已经解决了,是我前面没有定义好timer,全局timer前面加上var就可以了,谢谢。
    2018-05-04 16:40:22
  • Riokson 回复 提问者 qq_卡几玛_04415321 #3
    嗯,我都还没发现你前面的timer没定义
    2018-05-04 17:05:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师