如何从表单结果中删除 isNaN?
Posted
技术标签:
【中文标题】如何从表单结果中删除 isNaN?【英文标题】:how do I get rid of isNaN from form results? 【发布时间】:2012-01-29 16:13:12 【问题描述】:我正在创建一个小计算器。其中一部分将允许您输入最多 4 个数字,但您也可以只输入 1,2 或 3。我的代码正常工作,除了当我只输入 1、2 或 3 个数字时,我会得到我没有输入的数字的 NaN 结果。
如何摆脱 NaN 结果?
我用于分割输入表单数据的 jQuery 是 -
var numbers = num4.split(" ");
var firstNumber = parseInt(margins[0], 10),
secondNumber = parseInt(margins[1], 10),
thirdNumber = parseInt(margins[2], 10),
fourthNumber = parseInt(margins[3], 10);
console.log(firstNumber, secondNumber, thirdNumber, fourthNumber);
var shorthand1 = parseInt (firstNumber, 10) * 1;
var shorthand2 = parseInt (secondNumber, 10) * 1;
var shorthand3 = parseInt (thirdNumber, 10) *1;
var shorthand4 = parseInt (fourthNumber, 10) *1;
而我只有
shorthand1 + shorthand2 + shorthand3 + shorthand4
结果显示在页面上的 div 中。
问题是如果我输入“10 10 10”而不输入第四个数字,我会得到结果
10 10 10 NaN
我可以检查 NaN 而不处理该结果吗?
【问题讨论】:
【参考方案1】:您可以使用 javascript isNaN(value)
函数检查值是否为 NaN。
【讨论】:
【参考方案2】:你可以在js中检查isNaN()。
请注意,isNaN() 函数仅检查值的“数值性质”,而不检查该值是否有限。要检查一个数字是否是有限的,你应该使用 JavaScript 的 isFinite()。
【讨论】:
Sudhur 是对的 - isFinite 检测到 NaN 并返回 false。 parseInt 如您所见返回 NaN。另外,我建议你在拆分之前检查你的 numbers 数组的长度。如果有人输入“10 10 10”,则数组缺少一个元素,numbers.length 会告诉你这一点。您可以分配填充值,向用户返回错误,或以您认为合适的任何方式处理它。【参考方案3】:isNaN()
函数判断一个值是否为非法数字(Not-a-Number)。
如果值为 NaN,则此函数返回 true,否则返回 false。
<script type="text/javascript">
document.write(isNaN(123)+ "<br />");
document.write(isNaN("Hello")+ "<br />");
document.write(isNaN(NaN)+ "<br />");
</script>
输出: 假 真的 真的 对于您的情况,您可以检查如下:
<html>
<body>
<script type="text/javascript">
if(!isNaN(123))
document.write(isNaN(123)+ "<br />");
if(isNaN("Hello"))
document.write(isNaN("Hello")+ "<br />");
</script>
</body>
</html>
【讨论】:
如果没有数字或没有文字,这是否有效?因此,如果他们只输入 10 10 而不是 10 10 10 10 那么它不会导致 10 10 NaN NaN ? 无论如何,在您的情况下, parseInt 将返回 NaN 作为空值。看到这个Question以上是关于如何从表单结果中删除 isNaN?的主要内容,如果未能解决你的问题,请参考以下文章