2013-10-20 16 views
0

我有8位數的列表項,其中大部分都以兩個零開頭。當我想調用函數並傳遞它的唯一編號時,幾乎總是當它以「00」開始時,它會得到一些看似隨機的數字。我仍然不知道如何或爲何發生。 以下是JSFiddle上的示例。當調用函數whith以零開始的參數時獲取隨機數

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; 
} 

爲了澄清這個問題: 我期望能獲得在在參數來調用它的功能相同的號碼,但對於一些原因,有時我會得到完全不同的數字。

回答

1

我是東西或其他的ID /參考號碼?如果是這樣,那麼將它們存儲爲字符串而不是數字更合適:

<input type="button" onclick="sample('00119001')" value="00119001" /><br/> 
2

00113004被解釋爲八進制。當你的文字有8或9時,這種情況不會發生,因爲js引擎會猜測它不能是八進制的。

要進行十進制文本,在開始

<input type="button" onclick="sample(113004)" value="00113004" /><br/> 

刪除0如果你真的想有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; 
} 
+0

那一個做了訣竅。謝謝:) http://jsfiddle.net/agapetos/EbpbX/4/ – agapetos

+0

第四種情況下工作 - 只有1和2(11112222)。這是因爲它是8位數字組合,其中第一個不是零? – agapetos

+0

不以0開頭的數字被解釋爲十進制。這就是「正常」的解釋:除非你想將它解釋爲八進制數,否則你從不會以0開始數字文字。 –