2013-10-20 3 views
0

8 자리 숫자로 된 목록에 항목이 있으며 대부분 숫자가 0으로 시작합니다. 함수를 호출하고 고유 한 번호를 전달하려는 경우 거의 항상 "00"으로 시작하면 임의의 숫자가 나타나는 것처럼 보입니다. 나는 아직도 어떻게 또는 왜 일어나고 있는지 모른다. 여기에 JSFiddle의 예가 나와 있습니다.0으로 시작하는 함수 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

내가 오전을 something-or-other의 ID/참조 번호? 그렇다면 숫자 대신 문자열로 저장하는 것이 더 적절합니다.

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

00113004은 8 진수로 해석됩니다. 이것은 js 엔진이 8 진수가 될 수 없다고 추측하기 때문에 리터럴에 8 또는 9가있을 때 발생하지 않습니다.

, 당신은 정말 공을 갖고 싶어 시작

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

그 중 하나가 트릭을 만들었습니다. 감사합니다 :) http://jsfiddle.net/agapetos/EbpbX/4/ – agapetos

+0

작동중인 4 번째 사례는 무엇입니까? 1과 2 만 있습니다 (11112222). 첫 번째 문자가 0이 아닌 문자가 8 자리 숫자로 조합 되었기 때문입니까? – agapetos

+0

0으로 시작하지 않는 숫자 리터럴은 십진수로 해석됩니다. 이것은 "보통"해석입니다. 숫자 리터럴을 8 진수로 해석하지 않으려면 0으로 시작하지 마십시오. –