2012-09-08 34 views
0

我想用箭頭鍵和javascript移動多個DIV(不含jQuery)。 我所有的DIV有「的位置是:絕對的」,等等。 我給這個函數:移動div時出現奇怪的動作

function move(orig, val) { 
    var num = parseInt(orig); 
    return ((num + val) + "px"); 
} 

而且我申請的移動功能如下:

myDiv.style.left= move(myDiv.style.left, moveX); 

而且只「作品「,因爲我注意到,當我的一個DIV左邊樣式爲< 0時,其他左邊樣式> 0的DIV」移動「比他快。所以如果我來回回顧,最後我所有的DIV都有相同的左邊(沒有嘗試這個垂直移動和最高值)。

在此先感謝您的幫助(請原諒我的英文不好)。

+0

'moveX'常量嗎?或者嘗試'parseInt(orig,10)'。如果兩者都不能解決問題,你能否提供一個jsFiddle演示? – pimvdb

+0

感謝您的回答。 moveX不是一個常量,它是一個「速度」變量。看來問題來自parseInt部分。當我用'var num = orig.replace('px','')* 1替換'var num = parseInt(orig);''這似乎工作。 –

回答

0

我懷疑parseInt不適合你的情況。如果您使用的是非整數,然後添加例如由於整數舍入,1.5將有效地起作用,如果您添加了2。這將無意中讓它移動得更快。

您有幾種選擇:

  • 使用parseFloat保留小數部分。
  • 使用+orig.replace("px", ""),它適用於非整數(或其他技巧如* 1)。
+0

你說得對。但是我的問題並不完全來自整數四捨五入。實際上,它來自parseInt應用於負值和正值左側值之間的差異: -10.5變爲-10(右側比通常更多),10.5變爲10(左側比通常更多),所以最後每個DIV都有左邊的值與左邊的值相同。 感謝您的回答pimvdb –

+0

@Baptiste Pillon:我沒有考慮過;感謝您的跟進! – pimvdb