【发布时间】: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)并发布它会为你写的内容,你正在阅读表单正常<input />表单元素吗? -
看它在 JSFiddle 上工作:jsfiddle.net/s0pj18qo,也许是某些恶魔重新定义了
Number函数? -
嗨@pedroyanky,如果这个或任何答案已经解决了您的问题,请考虑通过单击复选标记接受它。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
标签: javascript