2011-05-04 34 views
0

如何查看SPAN是否包含超過3位數字的數字?我嘗試了下面,但它沒有奏效。jQuery:如果數字高於3位數字

if ($('.pointScore .score').val() > 999) {  
     alert("Over 999 point");  
    } 

在此先感謝您。

+1

最有可能的.val()以字符串形式返回它。嘗試'.val()>「999」' – PerfectlyNormal 2011-05-04 09:40:00

+0

你不需要強制轉換爲Integer嗎?我猜測跨度值是字符串。完美正常的建議是危險的BTW。你不應該比較更大或更小的字符串。 – 2011-05-04 09:41:16

+0

@PerfectlyNormal,@Vladislav:不,JavaScript會爲你做這種事情。即使在很多時候它都是正確的。最好使用'parseInt',但*可能*不適用。 – 2011-05-04 09:52:15

回答

1

DOH!

我只是需要改變VAL()來發送短信()...

對不起......

if ($('.pointScore .score').text() > 999) {  
     alert("Over 999 point");  
    } 
7

你注意到一個span不具有價值,但還有另一種代碼的潛在問題。文本是一個字符串,所以你將比較一個字符串和一個數字。因爲這可能會有意想不到的結果,應該避免。

最簡單的方法是簡單地檢查字符串的長度:

if ($('.pointScore .score').text().length > 3) {  
    alert("Over 999 point"); 
} 

您也可以解析字符串成一個數字:

if (parseInt($('.pointScore .score').text(), 10) > 999) {  
    alert("Over 999 point"); 
} 
+0

我試圖找到一個案例,文本比較失敗,但我不能,你確定它不會自動投射? – Flash 2011-05-04 09:50:57

+0

更好的是,在'parseInt'中包含基數,以便每個人對待'0999'都是相同的,而不是通過實現來改變它。編輯:啊,好吧,用'parseInt'我是不會立即看到它的變化實現(不同於數字文字),相當普遍地返回'0'。儘管如此,使用基數參數(使用'10')它回來了'999',這可能更有用。 – 2011-05-04 09:53:10

+0

@Andrew:看起來Javascript非常適合猜測混合類型時的含義,但您仍應確保按照自己的意願完成轉換,而不要依賴Javascript引擎來試圖找出您想要的內容。 – Guffa 2011-05-04 13:49:38

0

或者,你可以使用length屬性

if ($('.pointScore .score').html().length > 3) {  
     alert("more than 3 digits");  
    } 
+0

' 1' – Zirak 2011-05-04 10:13:23

+0

lol,這是一個特例。 – Sufendy 2011-05-04 10:18:50

+0

永遠不要信任用戶輸入 – Zirak 2011-05-04 10:21:58

相關問題