2012-03-19 47 views
35

有人可以幫我找出爲什麼下面的jQuery代碼不起作用嗎? 我想從用戶輸入中返回一個整數。parseInt與jQuery

var test = parseInt($("#testid")); 

謝謝&再見!

+5

請界定「沒有按沒有用。「你期望發生什麼,真正發生了什麼? – 2012-03-19 18:02:47

回答

104
var test = parseInt($("#testid").val(), 10); 

您必須告訴它,您需要輸入您的目標的value

而且,總是提供第二個參數(基數)到parseInt。它試圖太聰明,如果沒有提供,它會自動檢測,並可能導致意想不到的結果。

提供10假設您需要一個基數爲10的數字。

+12

您應該在調用'parseInt'時總是指定基數。 – 2012-03-19 18:03:45

+0

parseInt的兼容性如何? – 2013-07-04 10:30:32

4
var test = parseInt($("#testid").val()); 
+2

您應該在調用'parseInt'時總是指定基數。 – 2012-03-19 18:06:56

13

兩個問題:

  1. 你傳遞元素的jQuery的包裝爲parseInt,這是不是你想要的,因爲parseInt將調用它toString,並取回"[object Object]"。您需要使用valtext或其他(取決於元素是什麼)來獲取所需的字符串。

  2. 你不告訴parseInt它應該使用什麼基數(數字基數),這會使你有奇數輸入的危險,當parseInt猜測使用哪個基數時,會給你奇數結果。

修復如果元素是一個表單字段:

//        vvvvv-- use val to get the value 
var test = parseInt($("#testid").val(), 10); 
//         ^^^^-- tell parseInt to use decimal (base 10) 

修復,如果該元素是別的東西,你要使用內的文字:

//        vvvvvv-- use text to get the text 
var test = parseInt($("#testid").text(), 10); 
//          ^^^^-- tell parseInt to use decimal (base 10)