2012-02-17 27 views
8

javascript/jQuery中有兩種方法將值爲「60px」和「40px」的變量添加到一起以獲得「100px」嗎?添加javascript像素值?

或者在更一般的意義上,我試圖計算出相對於其他對象的對象的位置和這將是非常方便的,如果我可以做這樣的事情:

$('#object2').css('left', $('#object1').css('left')+'60px'); 

當然,這只是給無效的「40px60px」。

回答

13

刪除字符串的像素,增加值,然後添加PX回

(parseInt("40px".replace(/px/,""))+60)+"px" 
+0

其他東西,讓我錯誤地計算「4060px 「在Chrome控制檯日誌中。然而,使用其他答案建議的parseInt,我從這個修改得到「100px」:'(parseInt(「40px」.replace(/ px /,「」))+ 60)+「px」' – joshuahedlund 2012-02-17 18:10:22

+0

對,我的錯誤把數字放在前面,否則會增加字符串。 parseInt使得字符串中的數字,所以應該工作得很好。 – 2012-02-17 21:11:56

4

您正在尋找的parseInt()功能。

var left1 = "40px"; 
var left2 = "60px"; 

// Add the integer values of the left values together 
var leftTotal = parseInt(left1, 10) + parseInt(left2, 10) + "px"; 

也值得研究的是parseFloat()方法。它與parseInt()做同樣的事情,但是對帶小數的數字(又名浮點數值)起作用。

0

您可以通過分析對象的css.left值做到這一點,有點像這樣:

$('#object2').css('left', (parseInt($('#object1').css('left')) + 60) + 'px'); 

但是你應該記住,該css.left值可能不是px,但也%em等,所以乾淨的方式將使用jQuery offset method,因爲這會給你正確的像素值。

$('#object2').css('left', ($('#object1').offset().left + 60) + 'px'); 
1
var shiftedRight = (parseFloat($('#object1').css('left')) + 60) + 'px'; 
$('#object2').css('left', shiftedRight); 

parseFloat將解析僅僅是一個數字的字符串前綴。

4

可能是最有效的方法是

parseInt("40px", 10) + parseInt("60px", 10) + "px" 

在parseInt函數調用的10的是必要的,以防止價值是以基地10

+0

似乎沒有在Chrome上工作,我似乎得到一個NaN,直到'px'組件被刪除 – sradforth 2013-08-11 09:24:57

+0

我認爲這是更好的答案,因爲** 1:**問題是:_two **變量**值「60px」和「40px」_,並且在接受的答案中,第二個值不是變量,** 2:**'parseInt'會將'40px'轉換爲40,因此不需要替換(/ px/, 「」)'。添加'+「px」'應該將Integer轉換爲String,就像它在接受的答案中一樣。這個解決方案是應該的,所以有人可以解釋爲什麼@wheresrhys會得到NaN? – papo 2016-10-30 16:17:59