2012-02-11 2 views
0

공백 만 입력하면 다음 프로그램에서 ex4 예외 This is not a valid number을 표시하는 대신 예외 (value less than 5)를 표시하지만 그 뒤에있는 논리를 이해할 수 없습니다.자바 스크립트 코드에서 흰 공백 잡기

<html> 
<head> 
    <title></title> 
    <script type="text/javascript"> 
     function promptCheck() { 

      var val=prompt("Enter a Number between 5 and 10",""); 

      try { 
      if(val=="") { 
       throw "ex1"; 
      } 

      else if(val<5) { 
       throw "ex2"; 
      } 

      else if(val>10) { 
       throw "ex3"; 
      } 

      else if(isNaN(val)) { 
       throw "ex4"; 
      } 
      } 

      catch(err) { 
       if(err=="ex1") { 
        alert("You have not entered any value"); 
       } 
       if(err=="ex2") { 
        alert("Value less than 5"); 
       } 
       if(err=="ex3") { 
        alert("Value greater than 10"); 
       } 
       if(err=="ex4") { 
        alert("This is not a valid number"); 
       } 
      } 

     } 
    </script> 
</head> 

<body> 
    <input type="button" value="Bring Mouse on Me!" onmouseover="promptCheck()" /> 
</body> 
</html> 

답변

2

:

var value = parseInt(val, 10); // would be NaN in case of empty string 
+0

예 ... 그게 문제입니다. – sandbox

2

공백으로 된 공백은 0으로 변환됩니다. 그리고 제로

alert(' ' * 1); // Shows 0 

5 미만, 당신은 공간에 대한 NaN을 인쇄 할 수있는 parseFloat를 사용하여 문제를 해결하기 위해 명확하다. 문자열 - 투 - 수 전환

var val = prompt("Enter a Number between 5 and 10", ""); 
val = /\d+/.exec(val); // Numbers if valid, null otherwise 

// OR, instead of the previous line: 
if (/\D/.test(val) { // If the input contains a non-digit character, error. 
    throw "ex4"; 
} else ... 

, this comparison of number-conversion methods를 참조하십시오
또 다른 옵션은 입력이 정수로 구성되어 있음을 보장하기 위해, regexps '에 사용하는 것입니다. 주어진 입력에 대해 어떤 일이 발생하는지 볼 수 있습니다. 단지 공백과 문자열이 빈 문자열로 취급되고, 당신이해야 할 것은 사전에 값을 구문 분석하는 것입니다 그것이 그래서 0

" "*1 // => 0 

로 변환되기 때문에 발생

+0

'else'를 재정렬하면 문제가 해결된다고 덧붙여 야합니다. – moteutsch

+0

좋습니다 ... 공정합니다. 이제 화이트 스페이스를 잡는 데 어떤 논리가 적용됩니까? – sandbox

+0

@moteutsch 'isNaN'은 공백이 0인지, 즉 NaN인지를 검사하기 때문에 문제를 해결할 수 없습니다. 그건 거짓말이야. –

관련 문제