2017-04-22 4 views
-2

안녕하세요, 누군가 내 함수의 출력이 17 자 이상의 숫자를 삽입 할 때도 기본값을 표시하는 이유를 설명해 주실 수 있습니까? 아마 슈퍼 간단 해요, 제발 쉽게 가자!Javascript 함수가 잘못된 대답을 기본값으로 설정합니다. (내 생각 엔)

function oddOrEven(number) { 
 
    var number = document.getElementById('number').value; 
 
    if(number % 2 != 0) { 
 
    document.getElementById('demo').innerHTML = "Odd"; 
 
    } 
 
    
 
    else { 
 
    document.getElementById('demo').innerHTML = "Even"; 
 
    } 
 
    if (number.length === 0) { 
 
    document.getElementById('demo').innerHTML = "Odd/Even"; 
 
    } 
 
}

+1

는 전체 코드를 제공합니다. –

+3

함수는'number'를 매개 변수로 사용하여 작성되었지만 함수가 수행하는 첫 번째 작업은 매개 변수 값을 덮어 씁니다. 함수는 어떻게 호출 되는가? – Pointy

+3

또한 "17 이상의 숫자"는 무엇을 의미합니까? 17 숫자 어디? – Pointy

답변

-1

당신은이 모든 일을 단순화 할 수 있습니다. 당신은 항상 ID '수'로 입력을 잡는 경우 당신은 PARAM을 통과 할 필요가 없습니다, 후 간단한 테스트 후 당신은 당신이 원하는 대답 인라인 할 수 있습니다

function oddOrEven(){ 
    var val = document.getElementById('number').value; 
    var number = parseInt(val, 10); 
    // if it's not a valid number, you'll have NaN here which is falsy 
    if (number) { 
     document.getElementById('demo').innerHTML = (number % 2) ? "Even" : "Odd"; 
    } 
} 

말했다 모든, 난 그냥 잡았를 그 기능을 두 번 이상 사용하는 것보다는 @ JJJ의 의견으로 17 자리를 말하는 것입니다. 이 경우의 문제는 JS 정수에 크기 제한이 있다는 것입니다. 더 큰 값을 파싱하면 기대하지 않을 숫자가 반환됩니다. 이 여기에 매우 많은 수의 일반 처리에 대한 논의가 많이 있습니다 http://2ality.com/2012/07/large-integers.html는하지만 계수의 문제에 대한 당신은 마지막 숫자를 가지고 그 이상한 있는지 확인하거나 심지어 같은 수 :

function oddOrEven(){ 
    var val = document.getElementById('number').value; 
    var number = parseInt(val, 10); 
    // if it's not a valid number, you'll have NaN here which is falsy 
    if (number) { 
     var lastDigit = val[val.length-1]; 
     document.getElementById('demo').innerHTML = (parseInt(lastDigit, 10) % 2) ? "Even" : "Odd"; 
    } 
} 
+0

공유해 주셔서 감사합니다. 코드를 수정하는 방법을 확인하는 것이 좋습니다. 매우 감사! – danboswell

+0

- 버튼을 누르는 사람들은 문제가 무엇인지 알 수 있도록 의견을 제공해야하며이를 수정할 수 있어야합니다. – Paul

+0

문제는 * "내 함수는 17자를 넘게 삽입해도 기본적으로"* * -이 코드는 똑같은 문제가 있습니다. – JJJ

관련 문제