2011-12-27 33 views
-2

可能重複:
Workarounds for JavaScript parseInt octal bug奇怪的JavaScript錯誤,當值= 9或8

以及我有這個 http://jsfiddle.net/gMDfk/1/ 警報返回0 中的jsfiddle代碼工作完美的,當值等於八或九.. Wtf在這裏?

+1

請不要只是鏈接到的jsfiddle但在這裏粘貼代碼。 – cambraca 2011-12-27 20:42:03

+0

好男人,我會在今後的問題中談論這個技巧:P – 2011-12-27 20:44:16

+1

確實。我曾經要求人們這樣做,但現在我只是想解決OP不希望未來的訪問者從問答中獲得任何好處;在實現之後,我的興趣就會消失。 – 2011-12-27 20:44:46

回答

7

添加, 10到parseInt函數:

parseInt(val, 10); 

它告訴JS治療是作爲基10號。默認情況下,以0開頭的任何內容均被視爲八進制數,即8進制數。由於09不是有效的8位數字,因此您將獲得0

+2

好的答案包含解釋。 12.4k用戶知道! – 2011-12-27 20:41:00

+0

我正在輸入它! – 2011-12-27 20:41:30

+3

然後你不小心按下了「提交」_before_你寫完了嗎? – 2011-12-27 20:41:47

1

Parseint應該使用基數參數:parseint(value,radix)。在你的情況下,基數是10.否則,它將作爲八進制。

2

用0前綴數字表示它被javascript解釋爲八進制。試試這個:

alert(parseInt("010")); //shows "8" 

你可以通過10作爲第二參數去parseInt修復它,這讓它知道你想要呢十進制解析。

alert(parseInt("010", 10)); //shows "10" 
0

指定基

parseInt(some_id_value,10);