在调用以零开头的函数whith参数时获取随机数

时间:2013-10-20 16:58:05

标签: javascript function arguments function-call

我的列表中的项目有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;
}

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

2 个答案:

答案 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/>