2012-02-26 285 views
1

我想移动一个div(头像)。div移动非常缓慢

我得到的最终位置通过点击页面上的,所以我跑了移动功能,

var avi = document.getElementById('avi_div'); 

move(start_left, start_top, end_left, end_top,avi) 


function move(a,b,c,d,e) { 
    if ((a != c) || (b != d)) { 

     (c > a) ? a++ : a--; 
     (d > b) ? b++ : b--; 

     e.style.left = a +'px'; 
     e.style.top = b +'px'; 

     setTimeout(function(){ move(a,b,c,d,e)}, 1); 
    } 
} 

好,它的工作原理,但尽管定时器设置为1,它的动作刚刚好Chrome浏览器,但很慢慢地在Firefox和极其缓慢的IE浏览器

回答

0

也许它是有道理的使用jquery .animate()。 也请注意... +“px”不适用于每个浏览器。并尝试setInterval/clearInterval函数。

+0

感谢您的回复,但我真的想知道为什么此功能无法正常工作。 运动比.animate()(它走过对角线直到top = end_top)更好,'px'也可以正常工作。 我没有收到错误,它只是缓慢移动。 – 2012-02-26 22:28:07

+0

好的。查看延迟值(以我知道的毫秒为单位),它对于IE来说可能非常小。设置500ms并检查脚本是否正常工作。 – ZloyPotroh 2012-02-27 00:20:40

0

不同浏览器中使用的最小延迟时间有所不同。
看到这篇文章:http://ajaxian.com/archives/settimeout-delay(它也建议另一种计时事件到0延迟的方法,你可能会尝试)。

由于xcompl建议 - 在这里使用setInterval似乎更好。

另请参阅http://ejohn.org/blog/how-javascript-timers-work/了解Javascript中定时器幕后的情况。
页面上还有其他什么东西阻碍你的计时器?一些JavaScript引擎可能会比其他人更好地处理它...