parseInt("07") = 7
parseInt("08") = 0
parseInt("09") = 0
原因:
原来当前面有0的时候,parseInt默认把它当作八进制处理了,01--07自然没有问题。
但是09,08都是不合格的八进制形式,所以被按照0处理了。
解决方案:
利用parseInt函数的另一个参数,显示指定parseInt按十进制处理。
例如:
parseInt("08",10) =8
parseInt("09",10) =9
问题解决!
附录:
parseInt
Parses a string argument and returns an integer of the specified radix or base.
语法
parseInt(string,radix)参数
string | A string that represents the value you want to parse. |
radix | (Optional) An integer that represents the radix of the return value. |
描述
The parseInt function is a built-in JavaScript function.The parseInt function parses its first argument, a string, and attempts to return an integer of the specified radix (base). For example, a radix of 10 indicates to convert to a decimal number, 8 octal, 16 hexadecimal, and so on. For radixes above 10, the letters of the alphabet indicate numerals greater than 9. For example, for hexadecimal numbers (base 16), A through F are used.
If the radix is not specified or is specified as 0, JavaScript assumes the following:
- If the input string begins with "0x", the radix is 16 (hexadecimal).
- If the input string begins with "0", the radix is eight (octal).
- If the input string begins with any other value, the radix is 10 (decimal).
For arithmetic purposes, the "NaN" value is not a number in any radix. You can call the isNaN function to determine if the result of parseInt is "NaN". If "NaN" is passed on to arithmetic operations, the operation results will also be "NaN".
示例
The following examples all return 15:parseInt("F", 16)
parseInt("17", 8)
parseInt("15", 10)
parseInt(15.99, 10)
parseInt("FXX123", 16)
parseInt("1111", 2)
parseInt("15*3", 10)
The following examples all return "NaN":
parseInt("Hello", 8)
parseInt("0x7", 10)
parseInt("FFF", 10)
Even though the radix is specified differently, the following examples all return 17 because the input string begins with "0x".
parseInt("0x11", 16)
parseInt("0x11", 0)
parseInt("0x11")