1 function imgLshow(){ 2 var ul_box = document.getElementById("ul_box"); 3 var lis = ul_box.getElementsByTagName("li"); 4 for (var i = 0; i < lis.length; i++){ 5 var li = lis[i] 6 li.onmouseover = goto; 7 li.onmouseout = backto; 8 9 } 10 function goto(){ 11 var lefted = parseInt(li.getElementsByTagName("img").item(0).style.left) 12 if(lefted>(-10)){ 13 this.getElementsByTagName("img")[0].style.left = -1+"px"; 14 setTimeout(goto,10); 15 }else { 16 this.style.left = -10 +"px"; 17 } 18 19 } 20 function backto(){ 21 this.getElementsByTagName("img")[0].style.left = 0; 22 } 23 } 24 imgLshow();
我想模仿京东的图片滑动,即鼠标移动到图片时,图片缓慢向左滑动10像素,鼠标离开时,图片缓慢归位。我用了一个settimeout,导致了错误,不知道如何修改了,求大神指点迷津,谢谢。
你这段 setTimeout(goto,10);我觉得不应该写在goto方法里,试着拿出去在外面再写个方法里调用这个方法试试吧。
刚刚得知,setTimeout不能写在for循环里。
parseInt(li.getElementsByTagName("img").item(0).style.left) 这句话有效?
让您见笑了,果然没效,我alert(lefted),怎么都是零。把li改为this,管事了。
1 function goto(e){ 2 var lefted = parseInt(e.getElementsByTagName("img").item(0).style.left) 3 if(lefted>(-10)){ 4 e.getElementsByTagName("img")[0].style.left = -1+"px"; 5 setTimeout(goto(e),10); 6 }else { 7 e.style.left = -10 +"px"; 8 } 9 10 } 11 12 $("#ul_box>li").mouseover(function(){ 13 goto(this[0]); 14 }).mouseout(function(){ 15 this[0].getElementsByTagName("img")[0].style.left = 0; 16 });
手写的不知道队不对。没有验证。
尽管我在第一句的最后面添加了;,但是还是没有出来效果,应该是我不会调试。
http://www.zan3.com/zan1097.html 用css3解决吧,受不鸟了!!