2

我有一个按钮,我在后面的代码中添加了一个onclick并传递了一个唯一 ID,该 ID 将传递给 js 函数。id 以 0 开头。

它不起作用,最终我发现它传递的数字 id 是错误的......

IE。看到这个:js小提琴

它在数字的开头和结尾与 ' 一起使用。只是想知道为什么 013 变成 11。我做了一些谷歌搜索,找不到任何东西......

干杯

罗宾

编辑:

多谢你们。是的,现在明白了。

因为在这种情况下,开头的 0 有一个含义,这里是邮件列表中的收件人 ID,我将使用 '013' 而不是 013,即一个字符串。然后我可以拆分 js 中的值,因为 3 个值中的每一个都代表一个不同的 id,它总是只有 1 个字符长,即 0-9。

4

4 回答 4

8

以 a 开头的数字文字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        
}

演示:http: //jsfiddle.net/XYa6U/5/

于 2012-10-15T01:09:22.360 回答
2

013是八进制,不是十进制,十进制等于 11

于 2012-10-15T01:08:34.667 回答
0

您应该注意0130. 在 Javascript 中,这会导致数字被视为八进制。一般来说,你会想要使用十进制和十六进制数字系统。但是,正如这个问题所示,八进制数有时很有用。

我希望这有帮助!:)

于 2012-10-15T01:09:33.760 回答
0

如果数字的第一个数字为零,则 parseInt 将该数字解释为八进制。

您可以像这样指定以十为基数:

parseInt(numberString, 10)

您还可以使用这样的正则表达式删除这些零(结果将是一个字符串):

numberString.replace(/^0+/g, '');

于 2012-10-15T01:11:38.660 回答