【问题标题】:Javascript Prompt Cancel Button not "Canceling"Javascript提示取消按钮不是“取消”
【发布时间】:2013-04-04 23:49:35
【问题描述】:

我注意到当您让用户通过prompt 窗口输入文本时,提示将返回null 并继续使用代码。我希望取消按钮执行它所说的操作并取消。我尝试了几个if 语句,包括:

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

这使得 OK 和 Cancel 按钮都返回 false,并且即使按下 OK,代码也不会继续。

他们的某些代码是否会影响“取消”按钮以阻止脚本继续执行?谢谢!

我对这个网站很陌生,所以如果我没有把自己说得很清楚,请原谅我:)

【问题讨论】:

  • eval 声明是怎么回事? verifyInput 是什么?
  • 这基本上是一个计算器功能(这就是为什么我不小心把};放在最后。eval“评估”两个提示答案并提醒结果。我没有知道verifyInput 是什么,我只是从有关此主题的另一个问题中尝试过。

标签: javascript html prompt


【解决方案1】:

这里的问题是您使用身份运算符 (===) 来检查 null...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>

【讨论】:

    【解决方案2】:

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

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

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

    alert( +x + +y );
    

    【讨论】:

    • 谢谢! if (x === "") 完美地完成了这项工作!
    • 这是我唯一可以 +1 的答案,因为它保留了严格的等于运算符 ===。尽管有另一种方法我会接受; if (!(x = prompt('blah'))) return;
    【解决方案3】:

    用命令break;试试吧

    【讨论】:

      猜你喜欢
      • 2011-10-21
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 2011-08-15
      相关资源
      最近更新 更多