0

リストに 8 桁の項目があり、そのほとんどが 2 つのゼロで始まります。関数を呼び出して一意の番号を渡したい場合、ほとんどの場合、「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

001130048 進数として解釈されます。これは、リテラルに 8 または 9 がある場合には発生しません。これは、js エンジンが 8 進数ではないと推測するためです。

010 進リテラルを作成するには、先頭の を削除します

<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 に答える