【问题标题】:javascript throw and catch errors not displaying the expected resultjavascript throw 和 catch 错误未显示预期结果
【发布时间】:2016-06-28 19:15:17
【问题描述】:

我在 try 、 catch 和 throw i 错误中遇到了这个问题。但得到的结果是标记的方式。这是代码。当我在表单字段中输入大于 5 的数字时,而不是扔得太高什么都不显示。当我输入小于 5 的数字时,它显示得太高,而不是太低。事实上,大多数其他 if 条件都不会显示。除了。空的太高了。谁能解释一下是哪个异常?

function myFunction() {
  var x, message;

  message = document.getElementById('para');
  message.innerHTML =  '';
  x = document.getElementById('formField').value;

  try {
    if (x == "") throw 'empty';

    if (x == NaN) throw 'not a number';

    x = Number(x);

    if (x < 5) throw 'too low';

    if (x > 5) throw  'too high';

  }
    catch(err){
    message.innerHTML = 'input is ' + err;
  }
}

你们中的许多人似乎不明白我的问题,这段代码是从 W3schools 直接复制和粘贴的。但它不能正常工作。当输入的值与 if 语句匹配时,各种 if 语句应该抛出某些错误。而是给出了一种脱节的结果。就像当我只输入 2 个数字时,我输入的不是太低,而是输入太高。当我输入超过 5 的数字时,它不会抛出任何错误,并且对于 NaN 没有来自 javascript 的响应。

有没有人可以理解我在说什么?我认为您实际上应该自己运行代码,请告诉我我在哪里感到困惑。

【问题讨论】:

  • x == NaN 无法使用isNaN()
  • 谢谢。但是其他条件呢,如果
  • 我尝试了这个功能,它对我有用,你能在try 之前添加console.log(x) 并发布它会为你写的内容,你正在阅读表单正常&lt;input /&gt; 表单元素吗?
  • 看它在 JSFiddle 上工作:jsfiddle.net/s0pj18qo,也许是某些恶魔重新定义了Number 函数?
  • 嗨@pedroyanky,如果这个或任何答案已经解决了您的问题,请考虑通过单击复选标记接受它。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。

标签: javascript


【解决方案1】:

尝试在控制台调试:

NaN === NaN

并且想知道 :) 第二,你的错误 - 你必须将 x 转换为 int:

x = parseInt(document.getElementById('formField').value);

【讨论】:

    【解决方案2】:

    你应该使用 isNan() 而不是 Nan。 见例子here...

    这里还有额外的上下文: Why is IsNaN(x) different from x == NaN where x = NaN

    【讨论】:

    • 但这并不能解释他所描述的行为。
    猜你喜欢
    • 2023-01-10
    • 2011-10-02
    • 2019-04-05
    • 2022-08-14
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2020-09-19
    相关资源
    最近更新 更多