2015-02-06 1 views
0

나는 모든 것을 올바르게했지만 여전히 모든 값에 대해 기능이 "유효하지 않음"으로 표시됩니다. 누군가가 문제가있는 곳을 말해 줄 수 있습니까?JavaScript 유효성 검사 기능이 항상 유효하지 않음

<html> 
<head> 
<script> 
function alpha() 
{ 
var x = document.getElementById('input1'); 
var y = x.value; 
var z = isNaN(y); 
if(z<1 || z>10){console.log("Invalid");} else {console.log("valid");} 
} 
</script> 
</head> 

<body> 
<button id="but1" onmouseover="alpha()" style="background:blue;">Click Me</button> 
<p id=para1> Hello! This is paragraph One! </p> 
<input type=text id=input1 > 
</body> 
</html> 

미리 감사드립니다. 바보 같은 질문을해서 죄송합니다. 그러나 코드가 잘못되어있는 곳을 찾을 수 없습니다!

+1

에게'의 반환 값을 코드를 정리하는 것이 방법이다. –

답변

2

isNaN은 부울을 반환하고 숫자와 비교합니다. 너는 너의 범위에 x을 비교하고 싶을 것이다. 여기

if(z || x<1 || x>10) 

내가 isNaN` 숫자 만 부울이 아닌 비트

function alpha(){ 

    //name your variables something meaningful 
    var userInputField = document.getElementById('input1'); 

    //using parse int tells yourself and future programmers you want an int 
    //it also gives you NaN if it's not a number so you don't have to check yourself 
    //the 10 is the radix you want to convert to 
    var userInputedValue = parseInt(x.value,10); 
    //check explicitly for NaN will save you some headaches 
    if(userInputedValue === NaN || userInputedValue<1 || userInputedValue>10){ 
     console.log("Invalid"); 
    } else { 
     console.log("valid"); 
    } 
} 
+1

또한'parseFloat' 또는'parseInt'가 필요합니다. 'x '는 숫자가 아니라 요소이기도합니다. – zerkms

+1

@zerkms 올바른 형식을 사용하는 것이 더 낫지 만, 그런 식으로 비교할 때'x'는 암시 적으로 숫자로 변환되지 않습니까? –

+0

@ t.niese x가 숫자가 아닌 isNaN (x) 인 경우 false가 반환됩니다. –

관련 문제