<script language="javascript">
alert(parseInt("010",10)); //10
alert(parseInt(010,10)); //8
alert(parseInt(010.toString(),10)); //8
alert(parseInt(""+010,10)); //8
</script>
why?一个表单控件的值是010,用parseInt转换后总是8。

解决方案 »

  1.   

    第一个参数必须是字符串,试试
    parseInt( String(010), 10 );
      

  2.   

    alert(010);  //8
    alert(""+010); //8
    系统自动进行转换的结果
      

  3.   

    parseInt(string, [radix])
    第一个参数string类型 表示要被解析的字符串
    第二个参数 可选的,表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
     
    当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。举例,如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
     
      

  4.   

    parseInt( String(010), 10 ); 我试过了,是8。
      

  5.   

    alert(parseInt("010",10)); 
    因为parseInt第一个参数要求是字符串,所以按照10进制来转换,结果是10
    alert(parseInt(010,10)); //8
    第一个参数不是字符串,所以自动转换,0开头按8进制转换,相当于parseInt("8",10))
    alert(parseInt(010.toString(),10)); //8
    同2
    alert(parseInt(""+010,10)); //8
    同2
    parseInt( String(010), 10 ); 
    同2,其实就是第一个参数非字符串时自动调用的方法,String()对null和undefined也有效
      

  6.   

    010.toString()后不是变成字符串?
    ""+010之后不是变成字符串?
    变成字符串后就作为parseInt第一个参数。
      

  7.   

    010.toString(),先把010变成10进制8,再变成"8"字符串
      

  8.   

    010.toString()到底是10进制的8,还是8进制的8 ???