可能重复:
When I press enter I get isNaN, but the value is a number
How to change the content of a variable to zero if isNaN
当我按回车时,“$ isNaN”出现在文本框中。我之前提出了这个问题,但错误地说了。 这是我需要纠正的功课。一切都有效。我一直在努力,但“$ isNaN”不断出现。我很感激任何建议。链接在这里。 http://ciswebs.smc.edu/cis54/tyson_schweidel/homework2.htm
答案 0 :(得分:0)
你的花括号在错误的位置......如果价格为NaN,你只能检查税是否为NaN ...
第二次测试不应该依赖于第一次测试...换句话说,即使第一次测试通过,你仍然需要运行第二次测试(当前尝试不是这种情况)
if (isNaN(numPrice)){
alert("Sorry,you must enter a numeric value to place order");
if (isNaN(taxP))
alert("Sorry, you must enter a numeric tax value to continue");
return;
}
应该是:
if (isNaN(numPrice)){
alert("Sorry,you must enter a numeric value to place order");
return;
}
if (isNaN(taxP)){
alert("Sorry, you must enter a numeric tax value to continue");
return;
}
马丁
答案 1 :(得分:0)
要获得有效的结果,您的所有值都应该是有效的数字,否则它将返回NAN。
在你的所有输入中默认为0。
<form name="form">
<p>
Price: <input type="text" id="cost" name="cost" value="0" onchange="fixOrder();"/>
</p>
<p>
Tax:
<input type="text" id="tax" name="tax" value="0" onchange="fixOrder();"/>
</p>
<p>
Total:
<input type="text" id="total" name="total" value="0" disabled="disabled();"/>
</p>
</form>
或者以这种方式使用。
var numPrice = isNaN(parseFloat(document.getElementById("cost").value)) ? 0 :parseFloat(document.getElementById("cost").value);
var taxP = isNaN(parseFloat(document.getElementById("tax").value)) ?0 :parseFloat(document.getElementById("tax").value) ;
var total = isNaN(parseFloat(document.getElementById("total").value))?0 :parseFloat(document.getElementById("total").value);
通过这个你不需要任何警报,但是如果你仍然想要使用警报而不是使用这个三元组,只需在显示警报之前将0重新分配给你的NaN值。