0

我在列表中有 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;
}

澄清问题:我希望在参数中使用的函数中获得相同的数字来调用它,但由于某种原因,有时我得到完全不同的数字。

4

2 回答 2

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;
}
于 2013-10-20T17:00:06.000 回答
1

我认为这些数字是某物的 ID / 参考编号是否正确?如果是这样,那么将它们存储为字符串而不是数字更合适:

<input type="button" onclick="sample('00119001')" value="00119001" /><br/>
于 2013-10-20T17:50:24.953 回答