Javascript JS:求和列值并在更改时更新结果
我有一个表格,对于每一行,我必须显示两列的总和,并在第三列中显示。每次输入发生变化时,必须计算总和Javascript JS:求和列值并在更改时更新结果,javascript,Javascript,我有一个表格,对于每一行,我必须显示两列的总和,并在第三列中显示。每次输入发生变化时,必须计算总和 每行都有一个唯一的id 每个列输入字段都有自己的名称(尽管名称对每行重复) 这是包含示例数据的表的结构: <tbody> <tr> <td>Element Name ABC</td> <td> <div class="form-group">
- 每行都有一个唯一的id
- 每个列输入字段都有自己的名称(尽管名称对每行重复)
<tbody>
<tr>
<td>Element Name ABC</td>
<td>
<div class="form-group">
<div><input id="SM-J3D-01-1" onkeyup="calc(this);" onchange="calc(this);" type="number" min="0" step="1" name="Validos" class="form-control" value="0" />
<span class="text-danger field-validation-valid" data-valmsg-for="Validos" data-valmsg-replace="true"></span>
</div>
</div>
<td>
<div class="form-group">
<div><input id="SM-J3D-01-1" onkeyup="calc(this);" onchange="calc(this);" type="number" min="0" step="1" name="Cortesia" class="form-control" value="0" />
<span class="text-danger field-validation-valid" data-valmsg-for="Cortesia" data-valmsg-replace="true"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<div><input id="SM-J3D-01-1" type="number" readonly name="Total" class="form-control" value="0" />
<span class="text-danger field-validation-valid" data-valmsg-for="Total" data-valmsg-replace="true"></span>
</div>
</div>
</td>
//Begining second row
<tr>
<td>Element Name XYZ</td>
<td>
<div class="form-group">
<div><input id="SM-J3D-01-2" onkeyup="calc(this);" onchange="calc(this);" type="number" min="0" step="1" name="Validos" class="form-control" value="0" />
<span class="text-danger field-validation-valid" data-valmsg-for="Validos" data-valmsg-replace="true"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<div><input id="SM-J3D-01-2" onkeyup="calc(this);" onchange="calc(this);" type="number" min="0" step="1" name="Cortesia" class="form-control" value="0" />
<span class="text-danger field-validation-valid" data-valmsg-for="Cortesia" data-valmsg-replace="true"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<div><input id="SM-J3D-01-2" type="number" readonly name="Total" class="form-control" value="0" />
<span class="text-danger field-validation-valid" data-valmsg-for="Total" data-valmsg-replace="true"></span>
</div>
</div>
</td>
提前感谢您的建议。您可以使用此代码。
为此类的每个输入(将从中获取值)添加,例如:
toBeCalced
,对于将显示总计的每个输入,例如此类total
在JS中,我们将使用JQuery监听
change
事件,并执行以下步骤:
- 转到父行
- 使用类
迭代每个子级,并将其值添加到toBeCalced
变量中total
- 按类名获取总输入
并设置总值total
$(文档).ready(函数(){
$('.toBeCalced').change(函数(){
var行=$(this).closest('tr');
var valuesToSum=row.find('.toBeCalced');
var合计=0;
$.each(值总和,函数(索引,项){
总计+=parseInt($(item).val());
});
var totalInput=row.find('.total')[0];
$(totalInput).val(总计);
});
});代码>
元素名称ABC
//开始第二排
元素名称XYZ
您在这方面是否使用jQuery?如果是这样,它可能会大大简化。我看到您在使用$()
非常感谢!它工作得很好,这将是一个很好的基础,为类似的另一种情况:)如果你想看看第2部分:
$(function calc(id) {
var row = id.parentNode.parentNode;
var validos = row.cells[6].getElementsByTagName('input')[0].value;
var cortesia = row.cells[7].getElementsByTagName('input')[0].value;
resultado = parseFloat(validos) + parseFloat(cortesia);
row.cells[10].getElementsByTagName('input')[0].value = resultado;
});