作为一个项目,我正在建立一个"准系统"预算网络应用程序。我有一个表格,里面有很多输入来填写收入来源和金额。
<form>
<div class="form-group">
<input type="text" class="form-control" id="incomeSrc1" placeholder="Enter Source" name="incomeSrc">
<input type="text" class="form-control" id="incomeSrc2" placeholder="Enter Source" name="incomeSrc">
<input type="text" class="form-control" id="incomeSrc3" placeholder="Enter Source" name="incomeSrc">
<input type="text" class="form-control" id="incomeSrc4" placeholder="Enter Source" name="incomeSrc">
</div>
</form>
和
<form>
<div class="form-group">
<input type="number" class="form-control" id="amount1" placeholder="Enter Amount" name="incAmount">
<input type="number" class="form-control" id="amount2" placeholder="Enter Amount" name="incAmount">
<input type="number" class="form-control" id="amount3" placeholder="Enter Amount" name="incAmount">
<input type="number" class="form-control" id="amount4" placeholder="Enter Amount" name="incAmount">
</div>
</form>
我尝试将所有输入放入数组 amountArr ,以便我可以将它们加在一起并确定最大的收入来源。
这是我最近的尝试:
var incAmount = document.getElementsByName("incAmount");
var amountArr = [];
//Income input function
for (var index = 0; index < incAmount.length; index++) {
incAmount[index].addEventListener("input", add3);
function add3() {
for (var i = 0; i < incAmount.length; i++) {
amountArr[i] = parseFloat(incAmount[i].value);
if (incAmount[i].value === NaN) {
amountArr[i] = 0;
};
};
};
};
目标是如果输入没有被填充,那么它在数组中的值将为0.但是我的所有尝试都抛出了错误,如 -
incAmount [i] .value未定义
或阵列中充满了NaN&#39。
我也试过
if (amountArr[i].value !== NaN)
和
if (isNaN(amountArr[i]))
他们都没有返回true(执行随后的代码)
与NaN / null / undefined相比,为什么amountArr或空incAmount重新生成为真?
答案 0 :(得分:0)
您应该在条件中使用parseFloat
在比较之前将空值转换为NaN
。
- 或者您应该使用条件中的amountArr[i]
来检查是NaN
。
此外,您应该使用isNaN
函数来检查NaN
值。
if (isNaN(amountArr[i])) {
amountArr[i] = 0;
答案 1 :(得分:0)
我找到了一个有效的解决方案。
for (var i = 0; i < incAmount.length; i++) {
amountArr[i] = parseFloat(incAmount[i].value) || 0;
数组amountArr将显示所有空输入的0。