<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>123</title> <style> *{ margin: 0; padding: 0; text-align: center; list-style-type: none; } #conter{ position: relative; width: 1000px; height: 600px; top: 20px; left: 20px; border: 3px #000 solid; overflow: hidden; } #div2{ position: absolute; width: 6000px; height: 600px; /*transition: all 0.5s;*/ } #div2 img{ display: block; float: left; } .ul2{ z-index: 2; position: absolute; top: 90%; left: 50%; margin-left: -120px; } .ul2 li{ display: inline-block; width: 30px; height: 30px; border-radius: 30px; background: rgba(239, 243, 245, 0.64); color: black; font-weight: bold; line-height: 30px; margin: 0 15px; } span{ position: absolute; width: 50px; height: 50px; top: 45%; background: #eff3f5; z-index: 2; cursor:pointer } span:first-of-type{ left: 0; } span:last-child{ right: 0; } .bold{ background:black !important; color:#fff !important; } </style> <script> window.onload = function(){ var onTer =document.getElementById("conter"); var oDiv = document.getElementById("div2") var oImg = oDiv.getElementsByTagName("img"); var oSpan1= document.getElementsByTagName("span")[0]; var oSpan2= document.getElementsByTagName("span")[1]; var btn = document.getElementsByTagName('li'); var index = 0; var hans = 3000; function bttn(){ for(var i=0; i<btn.length; i++){ if(btn[i].className == 'bold'){ btn[i].className = " " break; } } btn[index].className ='bold' } function runner(oLft){ var newLeft = parseFloat(oDiv.style.left) - oLft; var margin = parseInt(oDiv.style.left); var time = 500; var inteval = 10; var i = time/inteval; var speed = oLft/i; console.log(speed) var go = function(){ // ----就是这里判断,这个 setTimeout 不知道为啥不执行----// if( (speed > 0 && margin < newLeft) || (speed < 0 && margin > newLeft)) { oDiv.style.left = margin + speed + 'px'; console.log("当前距离是:" +margin) setTimeout(go, inteval); } else{ oDiv.style.left =newLeft + 'px'; if(newLeft > -1000){ oDiv.style.left = -4000 + "px"; console.log(234) } if(newLeft < -4000){ oDiv.style.left = -1000 + "px"; } } } go() } function play() { timer = setTimeout(function () { oSpan2.onclick(); play(); }, 3000); } function stop() { clearTimeout(timer); } oSpan2.onclick=function(){ if(index==3){ index=0 // console.log('1'+index) }else{ index +=1 // console.log('2'+index) } // console.log('3'+index) runner(1000); bttn(); } oSpan1.onclick=function(){ if(index==0){ index=3 }else{ index -=1 } runner(-1000); bttn(); } for(var i=0; i<btn.length; i++){ btn[i].onclick = function(){ if(this.className == 'bold'){ return; } var myIndex = parseInt(this.getAttribute('index')) ; var offset = -1000 * (myIndex - index); index = myIndex; runner(offset); bttn(); } } onTer.onmouseover = stop; onTer.onmouseout = play; play(); } </script> </head> <body> <div id="conter"> <div id="div2" style="left: -1000px"> <img src="image/ddd.jpg" height="600" width="1000"/> <img src="image/aaa.jpg" height="600" width="1000"/> <img src="image/bbb.jpg" height="600" width="1000"/> <img src="image/ccc.jpg" height="600" width="1000"/> <img src="image/ddd.jpg" height="600" width="1000"/> <img src="image/aaa.jpg" height="600" width="1000"/> </div> <ul class="ul2"> <li index="0" class="bold">1</li> <li index="1">2</li> <li index="2">3</li> <li index="3">4</li> </ul> <span>左</span> <span>右</span> </div> </body> </html> // ----就是这里判断,这个 setTimeout 不知道为啥不执行----// if( (speed > 0 && margin < newLeft) || (speed < 0 && margin > newLeft)) { oDiv.style.left = margin + speed + 'px'; console.log("当前距离是:" +margin) setTimeout(go, inteval); }
求告知 感谢大神
qq_杀意隆_0