基于行和班级

时间:2017-01-14 13:14:07

标签: jquery

我试图将表中的文本值相加。这是我尝试的东西



$(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;
&#13;
&#13;

现在,我能够提醒它。 但是结果是每个tr的总数,所以我想将每行的结果分开。我怎么能实现这一目标?提前谢谢

抱歉我的英语不好。

2 个答案:

答案 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());
 })