我动态生成了几个字段,如下所示:
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,我不明白,请帮助我。
答案 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')
并对其进行正确过滤。