我遇到了try,catch和throw i错误的问题。但结果我得到的是标记。这是代码。当我在表单字段中键入大于5的数字时,而不是显示太高的任何内容。当我输入的数字小于5时,它显示的太高,而不是太低。事实上,如果条件没有显示,大多数其他的。除了。空虚而且太高了。谁能解释一下这样的异常?
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的响应。
有没有人可以理解我们在说什么?我认为你实际上应该自己运行代码并请教我混淆的地方。
答案 0 :(得分:0)
你应该使用isNan()而不是Nan。 参见示例here ...
这里有额外的背景: Why is IsNaN(x) different from x == NaN where x = NaN
答案 1 :(得分:0)
尝试在控制台中调试:
NaN === NaN
并且想知道:)其次,你的错误 - 你必须将x转换为int:
x = parseInt(document.getElementById('formField').value);