我正在尝试制作一个简单的添加工具,将2个值加在一起,我只是在NaN检查时遇到一点麻烦...想要打印“请插入数字”,如果是A或B,或两者都是NaN。
function getTotal() {
var a = parseInt(document.addBoxes.boxA.value);
var b = parseInt(document.addBoxes.boxB.value);
if (total != NaN) {
total = a+b;
document.getElementById("total").innerHTML = "The sum is " + total + ".";
}
else if (a === NaN || b === NaN){
document.getElementById("total").innerHTML = "Please insert numbers only.";
}
else if (a === NaN && b === NaN){
document.getElementById("total").innerHTML = "Please insert numbers only.";
}
};
此外,如果有一种性能友好的方法,或者更好的方法。
谢谢!
答案 0 :(得分:2)
不需要检查NaN
的每个单独值。
function getTotal() {
var a = parseInt(document.addBoxes.boxA.value);
var b = parseInt(document.addBoxes.boxB.value);
var total = a + b;
if (!isNaN(total)) {
document.getElementById("total").innerHTML = "The sum is " + total + ".";
} else {
document.getElementById("total").innerHTML = "Please insert numbers only.";
}
}
答案 1 :(得分:1)
您的代码中存在几个问题。
Line 4: if (total != NaN) {
total
尚未定义。如果你不想泄漏全局变量,你应事先在var
中定义它。
var total = a + b;
此外,NaN
永远不会自相等,所以这种平等是危险的。使用内置的isNaN()
函数来检查NaN或(因为你提到了性能友好)你可以跳过函数调用并使用:
if (total !== total) {
因为NaN是javascript中唯一不能与之相提并论的东西。请注意,我使用严格的不等号,我们不想要任何强制。这可能有点过于抽象,后来查看代码的人(包括你自己)可能已经忘记了NaN的这个独特属性,所以我在这个条件前加上一个注释,也许是MDN - Necessity of isNaN的链接页。
您的代码可能最终看起来像simonzack's answer。