【问题标题】:If-else conditions not working in JavascriptIf-else 条件在 Javascript 中不起作用
【发布时间】:2014-03-21 01:43:45
【问题描述】:

我写了这段代码,但只有第一个条件有效:

if(document.getElementById('v').value == Infinity) {
    //alert
}
else if(document.getElementById('v').value == -Infinity) {
    //alert
}       
else if(document.getElementById('v').value == undefined) {
    //alert
} 
else if(document.getElementById('v').value == isNaN) {
    //alert
}

为什么其他条件(-Infinity,undefined,isNaN)不起作用?

【问题讨论】:

  • 如何输入无穷大?
  • @elclanrs well 'Infinity' == Infinity 是真的,因为发生了强制
  • 如果那是 OP 的用例,它看起来很混乱,你会比较一个字符串。
  • @Numbers,我不确定谁确切批准了您的编辑,但您如此彻底地更改其他用户帖子的内容是不合适的。以后请注意您的编辑。编辑在那里,以便用户可以编辑帖子以适合他们。因此,我已回滚您的编辑。
  • 感谢@Sheridan 的解释。不过,我不同意你的观点,因为我的编辑确实完全保留了问题的含义,只是以更易读和更恰当的方式改变了提问的方式(不一定适合我的口味)。此外,现在的标题是完全错误的,因为它具有误导性。此外,添加的标签很有用。我认为应该保留一个在不改变其含义的情况下改进问题的编辑,就像我的那样。除了我编辑的行数之外,我没有看到你所说的重大变化,这当然不能成为一个有效的标准。

标签: javascript if-statement textbox nan


【解决方案1】:

您可以使用 throw 关键字在 Javascript 中抛出新的 exceptions(参见下面的示例)。

isNaN 是一个函数

要检查号码的有效性,请使用:Number.NEGATIVE_INFINITYNumber.POSITIVE_INFINITY

换句话说:

if (typeof document.getElementById('v') === 'undefined' ||
    document.getElementById('v').length === 0)
  throw new TypeError("Undefined value");
else if(parseInt(document.getElementById('v').value, 10) == Number.POSITIVE_INFINITY)
  throw new RangeError("Value is too big");
else if(isNaN(document.getElementById('v').value))
  throw new TypeError("Value must be a valid number");

您可以获取这些异常,例如:

try {
 // call your checkup function here
} catch (exception) {
 alert ("Oh bad... Exception detected: " + exception);
}

【讨论】:

  • 太棒了!现在功能:)
猜你喜欢
  • 2018-10-16
  • 2020-03-11
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多