2012-02-26 339 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引擎可能會比其他人更好地處理它...