将空输入添加到值为0的数组

时间:2017-12-05 18:08:32

标签: javascript arrays input

作为一个项目,我正在建立一个"准系统"预算网络应用程序。我有一个表格,里面有很多输入来填写收入来源和金额。

<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重新生成为真?

2 个答案:

答案 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。