我的列表中的项目有8位数字,其中大多数都以两个零开头。当我想调用函数并传递它的唯一数字时,几乎总是当它以“00”开头时它会得到一些看似随机的数字。我仍然不知道它是如何或为什么发生的。 以下是JSFiddle上的示例。
HTML:
<div id="working">
<input type="button" onclick="sample(00119001)" value="00119001" /><br/>
<input type="button" onclick="sample(00113008)" value="00113008" /><br/>
<input type="button" onclick="sample(68745696)" value="68745696" /><br/>
<input type="button" onclick="sample(11112222)" value="11112222" /><br/>
</div>
<div id="notworking">
<input type="button" onclick="sample(00113004)" value="00113004" /><br/>
<input type="button" onclick="sample(00113003)" value="00113003" /><br/>
<input type="button" onclick="sample(00106002)" value="00106002" /><br/>
<input type="button" onclick="sample(00120003)" value="00120003" /><br/>
</div>
<div id="show"></div>
JS:
function sample(a) {
var b = "0000000"+a;
b = b.substr(b.length-8);
document.getElementById("show").innerHTML="Input: "+a+" | Output: "+b;
}
澄清问题: 我期望在参数中使用的函数中获得相同的数字来调用它,但由于某种原因,有时我会得到完全不同的数字。
答案 0 :(得分:2)
00113004
被解释为八进制。当你的文字中有8或9时,这不会发生,因为js引擎猜测它不能是八进制。
要制作十进制文字,请在开头删除0
<input type="button" onclick="sample(113004)" value="00113004" /><br/>
如果你真的想拥有0,请使用字符串:
<input type="button" onclick="sample('00113004')" value="00113004" /><br/>
function sample(a) {
var b = "0000000"+Number(a);
b = b.substr(b.length-8);
document.getElementById("show").innerHTML="Input: "+a+" | Output: "+b;
}
答案 1 :(得分:1)
我是否正确地认为这些数字是某些东西的ID /参考号码?如果是这样,那么将它们存储为字符串而不是数字更合适:
<input type="button" onclick="sample('00119001')" value="00119001" /><br/>