2013-04-04 105 views
0

我注意到,当你有一个用户通过prompt窗口输入文本时,提示将返回null并继续继续前进的代码。我想要取消按钮来做它所做的事情并取消。我试过几个if声明,其中包括:Javascript提示取消按钮不“取消”

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)"); 
}; 

上面没有任何改变

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)"); 
}; 

而这一次使得无论是确定和取消按钮返回false,代码甚至不继续当按下OK时。

是他们的一些代码会影响取消按钮,使它停止脚本继续?谢谢!

我很新的网站,所以请原谅我,如果我没有让自己非常清楚:)

+1

什么是与'eval'声明成交试试吗?什么是'verifyInput'? – 2013-04-04 23:52:08

+0

这基本上是一个计算器函数(这就是为什么我在最后不小心留下了'};'''eval''评估了两个提示答案并提示结果,我不知道'verifyInput'是的,我刚刚从另一个关于这个主题的问题中试了一下 – 2013-04-05 00:02:07

回答

1

prompt返回字符串时,您正在检查相等性为null;这是行不通的。相反,这应该是你的条件:

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

这里你正在检查一个空字符串。而且,eval语句没有做任何事情,你可以没有它执行相同的代码:

alert(+x + +y); 
+0

谢谢!if(x ===“”)'完成这个工作! – 2013-04-05 00:08:09

+0

这是我可以+1的唯一答案,因为它使严格的等号运算符'==='。虽然有另外一种方法可以做到这一点我会接受;'if(!(x = prompt('blah')))return;' – 2013-04-05 00:10:10

2

这里的问题是,你正在使用的身份符(===)检查null。 ..本身是一个对象,而你的提示结果将是一个字符串...因此,它永远不会是真的...使用相等运算符,而不是(==)。

您也可能要删除eval语句,而是只是提醒结果:

警报( “” +(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>