2015-02-05 53 views
-1

怪異的結果我剛開始的JavaScript和jQuery,現在我堅持了這樣的問題:的Javascript/jQuery的給出了另外

var myCharacter = ('#myCharacter').css('top'); // gives 140px 
var numberOnly = myCharacter.replace('px',''); // gives 140 
var total = numberOnly + 20; // gives 14020 not 160 

我只是不明白爲什麼會這樣。

+1

因爲'numberOnly'是一個字符串,並且如果您嘗試向其添加整數,它會自動將整數強制轉換爲字符串。 – Andy 2015-02-05 14:21:12

+0

'('#myCharacter').css('top');'應該讀取'$('#myCharacter')。css('top');' – MrUpsidown 2015-02-05 14:21:15

+4

'var total = + numberOnly + 20;''直接使用'parseInt()'(即使在這裏也有基數並不重要):'var total = parseInt($('#myCharacter').css('top'),10)+20;'' – 2015-02-05 14:22:28

回答

5

你需要parseInt()

var total = parseInt(numberOnly) + 20; 

因爲numberOnly是一個字符串,而不是一個數字,所以它增加一個數字來這導致在14020作爲一個字符串的字符串

-1

numberOnlystring型還是,即它是一些字符。因此,您當前將字符串「140」與20進行了簡化,後者被隱式轉換爲字符串。

要解決此問題,請使用[parseInt][1]numberOnly轉換爲整數。

0

這是因爲numberOnlyString您可以通過強制轉換爲int

var total = +numberOnly + 20 
0

var myCharacter = ('#myCharacter').css('top'); // gives 140px 
 
var numberOnly = myCharacter.replace('px',''); // gives 140 
 
var total = parseInt(numberOnly) + 20;

1

當你更換 '140px' 像素',你結束了一個字符串類型的變量。 (javascript有類型,但它們是動態的)

當您調用'140'+ 20時,類型不會自動轉換,因爲+是一種對字符串有意義的操作:連接。

您應該明確地轉換爲數字,例如通過使用parseInt('140'),然後添加應按預期工作。

0

你試圖用繩子加起來所以先將其轉換成整數,用parseInt()要做到這一點:

var total = parseInt(numberOnly) + 20;//160 
1

作爲numberOnly + 20其中一個操作數是一個字符串,該+運營商做字符串連接,不加。

使用parseInt方法將字符串解析爲數字,然後您不必刪除px部分,因爲解析在遇到非數字字符時結束。

var myCharacter = parseInt(('#myCharacter').css('top'), 10); 
var total = myCharacter + 20;