我试图将表中的文本值相加。这是我尝试的东西
$(document).on("change", ".kd1", function() {
var sum = 0;
$('.kd1').each(function() {
sum += Number($( this ).closest('.kd1').val());
})
alert(sum);
});

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<table>
<tr>
<td><input type="text" class="kd1"></td>
<td><input type="text" class="kd1"></td>
</tr>
<tr>
<td><input type="text" class="kd1"></td>
<td><input type="text" class="kd1"></td>
</tr>
</table>
&#13;
现在,我能够提醒它。 但是结果是每个tr
的总数,所以我想将每行的结果分开。我怎么能实现这一目标?提前谢谢
抱歉我的英语不好。
答案 0 :(得分:1)
在alert
中显示总和似乎不是非常用户友好。相反,您可以向表中添加另一列,并在那里显示总和。
要计算每行的总和,只需在行上添加外部循环,并计算该循环内行的总和。我建议使用reduce
来获得总和,但这只是一个细节。在此代码段中看到它的工作原理:
$(document).on("change", ".kd1", function() {
$('table tr').each(function() {
$('.sum', this).text(
$('.kd1', this).get().reduce(function(sum, elem) {
return sum + +$(elem).val();
}, 0)
);
});
});
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<table>
<tr>
<td><input type="text" class="kd1"></td>
<td><input type="text" class="kd1"></td>
<td class="sum"></td>
</tr>
<tr>
<td><input type="text" class="kd1"></td>
<td><input type="text" class="kd1"></td>
<td class="sum"></td>
</tr>
</table>
答案 1 :(得分:0)
您可以将每个结果放入一个数组中,其中每个索引都是行的索引
var currentRow=$(this).closest('tr');
var index=$('table tr').index(currentRow);
sum[index]=0;
$(currentRow).find('.kd1').each(function() {
sum[index] += Number($( this ).val());
})