总和动态字段名称中始终显示零值

时间:2018-12-02 14:17:26

标签: javascript

我动态生成了几个字段,如下所示:

cols += '<td><input type="text" id="total" name="field[total][' + counter + ']" placeholder="Total" onchange="findTotal()"></td>';

这是我的JavaScript:

function findTotal(){
    var sum = 0;
    var cost = document.getElementsByName('field[total][]');
    for (var i = 0; i < cost.length; i++)
    {
        sum += parseFloat(cost[total][i].value);
    }
    document.getElementById('totalsemua').value = sum;
}

我正在尝试计算总和,但该值始终显示为0,我不明白,请帮助我。

1 个答案:

答案 0 :(得分:1)

好吧,你正在尝试做

sum += parseFloat(cost[total][i].value);

但是cost[total][i].value是什么?

var cost = document.getElementsByName('field[total][]');

是元素列表(NodeList),因此值应在cost[i].value内,而不是cost[total][i].value内。

您还错误地使用了document.getElementsByName

var cost = document.getElementsByName('field[total][]');

,但参数应为元素名称(而不是具有“ name”属性且具有该值的元素)。看到不同之处:

<someElement>...</someElement><!-- element with name someElement -->
<div name="someName">...</div><!-- element with name div and with attribute "name" -->

该方法旨在查找<someElement>事物:document.getElementsByName('someElement')。通过适当的选择器使用document.querySelectorAll或使用document.getElementsByName('input')并对其进行正确过滤。