我的轮播效果出了问题,谁可以帮我看一下
下面的a标签相当于切换图片,在a标签扫过几下后,图片轮播的时间就不正确了,根本停不下来,是不是定时器的开关有问题,我看了好多遍代码,找不出bug
2015-04-27
你的代码写的还好。之所以出现bug是因为太乱。导致timer这个变量有点乱。每次在执行一个新计时器时,先在里面清除一下之前的计时器就可以。我把你多余的给你注释了。你参考一下。
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Busy - 电商</title> <style> /* 任务 1 .banner_imgs的宽度应该等于多少? 2 如果让.number 里面a 居中? */ body,ul{margin: 0; padding: 0;} li{list-style: none;} .banner{ width: 800px; height: 450px; margin: 100px auto; position: relative; overflow:hidden; } .banner_imgs{ width: 500%; position: absolute; left: 0; top: 0; } .banner_imgs li{ float: left; } .banner_imgs img{ width: 800px; height: 100%; display: block; } .number{ width: 100%; text-align:center; position: absolute; left: 0; bottom: 20px; } .number a{ display: inline-block; width: 20px; background-color: #fff; height: 6px; overflow: hidden; } .number .on{ background-color:red; } </style> <script> window.onload=function(){ var warp=document.getElementById("warp"), img=document.getElementById("img"), list=document.getElementById("num").getElementsByTagName("a"), index=0, timer=null; //初始化 //自动切换函数 function play(){ index++; if(index>=list.length) index=0; count(index); } /*if(timer){ clearInterval(timer); timer=null; }*/ timer = setInterval(play,1000); //切到哪张图函数 function count(cindex){ for(var i=0;i<list.length;i++){ list[i].className=""; } list[cindex].className="on"; img.style.left="-"+800*cindex+"px"; index=cindex; } //移入容器停止 /* warp.onmouseover=function(){ clearInterval(timer); timer=null; }*/ //移出容器开始 /* warp.onmouseout=function(){ timer=setInterval(play,1000); }*/ //划过标签切换 for(var j=0;j<list.length;j++){ list[j].index=j; list[j].onmouseover=function(){ clearInterval(timer); count(this.index); } list[j].onmouseout = function(){ timer=setInterval(play,2000); } } } </script> </head> <body> <div class="banner" id="warp"> <ul class="banner_imgs" id="img"> <li><a href="javascript:;"><img src="http://img1.sycdn.imooc.com//53ad2498000174af13660768.jpg" alt=""></a></li> <li><a href="javascript:;"><img src="http://img1.sycdn.imooc.com//53ad25df0001300613660768.jpg" alt=""></a></li> <li><a href="javascript:;"><img src="http://img1.sycdn.imooc.com//53ad26010001ac1113660768.jpg" alt=""></a></li> <li><a href="javascript:;"><img src="http://img1.sycdn.imooc.com//53ad26170001a86013660768.jpg" alt=""></a></li> <li><a href="javascript:;"><img src="http://img1.sycdn.imooc.com//53ad26320001289e13660768.jpg" alt=""></a></li> </ul> <div class="number" id="num"> <a href="javascript:;" class="on"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> <a href="javascript:;"></a> </div> </div> </body> </html>
举报