为什么越播越快
main.onmouseout=function(){ timer=setInterval(function(){ index++; if (index>=len) { index=0; } changeImg(); },3000) } function changeImg(){ //console.log(index); //pics[index].className=slide-active; for (var i = 0; i < len; i++) { pics[i].style.display="none"; } pics[index].style.display="block"; }
为什么鼠标滑过移出后之后再移出会越播越快。。咋办
26
收起
正在回答
5回答
每次移入移出,没有清除定时器,它就会累加的。多个计时器一块作用,设置的时间就会发生交叉,速度就越来越快了
大脸猫大脸猫喵喵喵
2017-11-09 18:22:11
HTML: <!DOCTYPE html> <html> <head> <title>图片轮播</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="css/style.css"> </head> <body> <div class="main" id="main"> <!--图片轮播--> <div class="banner" id="banner"> <a href="#"> <div class="banner-slide slide1 slide-active "></div> </a> <a href="#"> <div class="banner-slide slide2"></div> </a> <a href="#"> <div class="banner-slide slide3 "></div> </a> </div> <!--上一张下一张按钮--> <a href="javascript:void(0)" class="button prev"></a> <a href="javascript:void(0)" class="button next"></a> <!--圆点导航--> <div class="dots"> <span class="active"></span><!--active表示当前圆点--> <span></span> <span></span> </div> <script type="text/javascript" src="js/js.js"></script> </div> </body> </html> CSS: *{ margin: 0; padding: 0; } ul{ list-style: none; } body{ font-family: "微软雅黑"; color: #14191e; } .main{ width: 1200px; height: 460px; margin: 30px auto; overflow: hidden; position: relative; } .banner{ width: 1200px; height: 460px; position: relative; } .banner-slide{ width: 1200px; height: 460px; background-repeat: no-repeat; position: absolute; display: none; } .slide1{ background-image: url("../img/bg1.jpg"); } .slide2{ background-image: url("../img/bg2.jpg"); } .slide3{ background-image: url("../img/bg3.jpg"); } .slide-active{ display: block; } .button{ position: absolute; width: 40px; height: 80px; left: 244px; top: 50%; margin-top: -40px; background: url("../img/n.png") no-repeat center center; } .button:hover{ background-color: #333; } .prev{ transform: rotate(90deg); } .next{ left: auto; right: 0; /*transform: rotate(270deg);*/ } .dots{ position: absolute; right: 20px; bottom: 24px; text-align: right; } .dots span{ display: inline-block;/*行内元素转为块元素,不然没办法设宽高*/ width: 12px; height: 12px; line-height: 12px; border-radius: 50%; background: rgba(7,17,27,0.4); box-shadow: 0 0 0 2px rgba(255,255,255,0.8) inset; margin-left: 8px; cursor: pointer; } .dots span.active{ background: #fff; box-shadow: 0 0 0 2px rgba(7,17,27,0.4) inset; } JS: //封装一个代替document.getElementById()的方法,以免获取元素时一直写太麻烦,之后直接调用即可 function byId(id){//要有形参 return typeof(id)==="string"?document.getElementById(id):id; } var index=0, timer, pics=byId("banner").getElementsByTagName("div"), len=pics.length; function slideImg(){ var main=byId("main"); main.onmouseover=function(){ /*setTimeout( clearTimeout(timer) );*/ } main.onmouseout=function(){ timer=setInterval(function(){ index++; if (index>=len) { index=0;//轮流 } changeImg(); },3000) //clearInterval(timer); } } //切换图片 function changeImg(){ //console.log(index); //pics[index].className=slide-active; for (var i = 0; i < len; i++) { pics[i].style.display="none"; } pics[index].style.display="block"; } slideImg();
相似问题
登录后可查看更多问答,登录/注册
前端小白入门系列课程
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36713 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星