我有一个按钮,在后面的代码中我添加onclick
并传递一个唯一的ID,该ID将被传递给js函数。 id以0开头。
它没有用,最终我发现数字,身份证,传递是错误的......
IE中。看到这个:js fiddle
它适用于数字的开头和结尾。只是想知道为什么013转到11.我做了一些谷歌搜索,找不到任何东西......
干杯
罗宾
编辑:
谢谢你们。是的,现在明白了。
在这种情况下,开头的0有意义,这里是邮件列表中的收件人ID,我将使用'013'而不是仅使用013,即字符串。然后,我可以将值分成js,因为3个值中的每一个代表一个不同的id,它总是只有1个字符长,即0-9。
答案 0 :(得分:8)
以0
开头的数字文字被视为八进制数。因此基数8中的13是基数10中的11 ...
八位数字文字已被弃用,但如果您没有处于严格模式,则仍然有效。
(你没有问,但是)以0x
开头的数字文字被视为十六进制。
MDN的更多信息。
在您的演示中,该参数被称为id
,这意味着您不需要对其进行数值运算 - 如果是这样,只需将其放在引号中并将其用作字符串。
如果你需要能够传递前导零但是仍然将数字视为基数10来对其进行数值运算,则可以将其括在引号中以将其作为字符串传递,然后将字符串转换为数字一种强迫基础10的方式,例如:
something('013');
function something(id){
alert(+id); // use unary plus operator to convert
// OR
alert(parseInt(id,10)); // use parseInt() to convert
}
答案 1 :(得分:2)
013
是八进制,不是十进制,十进制等于11
答案 2 :(得分:0)
您应该注意013
以0
开头。在Javascript中,这会导致数字被视为八进制。通常,您将要使用十进制和十六进制数字系统。有时候,八进制数很有用,如this question shows.
我希望这有帮助! :)
答案 3 :(得分:0)
如果数字的第一个数字为零,则parseInt将该数字解释为八进制。
您可以像这样指定十个基数:
parseInt(numberString, 10)
你也可以用这样的正则表达式删除这样的零(结果将是一个字符串):
numberString.replace(/^0+/g, '');