2013-04-04 1 views
0

사용자가 prompt 창을 통해 텍스트를 입력하게되면 프롬프트는 null을 반환하고 코드를 계속 진행합니다. 취소 버튼을 사용하여 취소 및 취소를 요청합니다. 나는 등 여러 가지 if 문, 시도했다 : 아무것도에게자바 스크립트 프롬프트 취소 버튼 "취소 중"이 아닙니다

var x= prompt("Please enter a number for <X>: (<X> + <Y>)"); 
    if (verifyInput(false)) { 
     return; 
    } 
var y= prompt("Please enter a number for <Y>: (<X> + <Y>)"); 
    if (verifyInput(false)) { 
     return; 
    } 
eval ("x=x; y=y; alert(+x + + y)"); 
}; 

을 변경하지 않습니다 위의

var x= prompt("Please enter a number for <X>: (<X> + <Y>)"); 
if (x === null) { 
    return; 
} 
var y= prompt("Please enter a number for <Y>: (<X> + <Y>)"); 
if (x === null) { 
     return; 
} 
eval ("x=x; y=y; alert(+x + + y)"); 
}; 

을 그리고이 하나가 OK를 모두 만들고 취소 버튼은 false를 반환하고, 코드도 계속되지 않습니다 확인을 누르면

일부 코드가 취소 버튼에 영향을 미치므로 스크립트가 계속 중단되지 않습니까? 감사!

나는 내가 여기에 문제가 당신이 널 (null)를 확인하기 위해 신원 연산자 (===)를 사용하는 것입니다 :)

+1

은'eval' 문으로 거래는 무엇으로 그것을 시도? 그리고'verifyInput'은 무엇입니까? –

+0

이것은 기본적으로 계산기 함수를위한 것입니다 (결국 우연히'};를 남겨 두었습니다.)'eval'은 두 개의 프롬프트 응답을 "평가"하고 결과를 경고합니다. 나는'verifyInput' 이 주제에 관한 다른 질문에서 방금 시도했습니다. –

답변

1

prompt이 문자열을 반환하면 null과 같은지 확인합니다. 이 작동하지 않습니다. 대신, 이것은 귀하의 조건이어야합니다 :

if (x === "") {/.../} 

여기서 빈 문자열을 확인합니다. 또한, 평가 문은 아무것도하지 않습니다, 당신은 그것없이 동일한 코드를 실행할 수 있습니다

alert(+x + +y); 
+0

감사합니다!'if (x === "")'는 작업을 완벽하게 수행합니다! –

+0

엄격한 동등 연산자를 유지하기 때문에 +1 할 수있는 유일한 대답입니다. '==='.이 일을하는 또 다른 방법이 있지만, 나는 받아 들일 것이다. –

2

자신이 정말 명확하지 않은 경우 그래서 저를 용서이 웹 사이트에 아주 새로운 오전. .. 자체의 null in은 객체이고 프롬프트 결과는 문자열이됩니다 ... 그러므로 절대 true가 아닙니다 ... 대신 항등 연산자 (==)를 사용하십시오.

또한 평가 후면 문을 제거하고 대신 결과를 경고 할 수 있습니다 :

경고를 (""+ (X + Y));

편집 :

: 죄송합니다 여기 나를 위해 작동 코드 ... 실제 기본 HTML 페이지입니다하지만 당신은 당신이 무엇을해야 도움이 될 것입니다 ... 여기에 실제 수학적 과정을 수행하고 싶은 것으로 나타났습니다
<html> 
    <head> 
    <title>test</title> 
    </head> 
    <body onload="Prompter();"> 
    <script type="text/javascript"> 
     function Prompter() 
     { 
     var x = prompt("Please enter a number for <X>: (<X> + <Y>)"); 
     var y = prompt("Please enter a number for <Y>: (<X> + <Y>)"); 
     if(x && y) 
      alert("" + (parseInt(x) + parseInt(y))); 
     } 
    </script> 
    </body> 
</html>