2014-01-06 63 views
0

在JavaScriptPlus操作是附加的,而不是做數學

100px320

這是怎麼回事?
parent.height()等於160,所以看起來好像parent.css("top")是一個字符串,JS只是簡單地將一些字符添加到字符串中,而不是進行數學計算。

爲什麼它不工作,我該如何正確地做到這一點?

回答

1

+運算符在Javascript中「超載」。

真的發生了什麼事是沒有在Javascript中鍵入,所以+運營商正試圖強迫你的價值觀是+ -able。

你說得對,.css("top")是一個字符串:.css方法將返回究竟是在CSS,你最好有單位申報在你的CSS。

當Javascript在不同類型的兩個變量之間遇到+時,它盡其所能,並將整數強制轉換爲字符串,所以不會失去任何精度。

你可以做這樣的事情來解決這個問題:

parseInt(parent.css("top")) - - parent.height() * 2; 

這有兩個漁獲:

  1. parseInt函數採用第一個整數是看到並返回。 100px將返回100,但是也將返回100,400。小心。

  2. - -將強制Javascript執行算術運算,因爲您要求它從負數中減去一個數字,這與加法相同。但是,運營商-沒有任何歧義,因此它將運行或生成NaN

+1

回答過的問題,謝謝;) – Piotrek

2

您需要更改該字符串一個數字 - 你可以用parseInt做到這一點:

parseInt(parent.css("top"),10) + parent.height() * 2 
相關問題