我需要通过添加基于相同id的表行来获取表总数,但是这里第一个表正确,但是对于第二个表,它添加第一个表总计并显示总和。 如何避免将其添加到第二个表。 我的HTML代码:
<table>
<tr style="background:#2b2e76">
<th colspan="1" style="padding: 0;">
<p style="color:white">
Table One
</p>
</th>
<th>
<p style="color:white" class="BundleB4936" id="B4936">Total : <span class="BundelRowTotalB4936">1400.00</span></p>
</th>
</tr>
<tr>
<td>
<input type="text" value="200.00" name="row_total[]" id="rowtotal11_B4936" class="rowTotal">
</td>
</tr>
<tr>
<td>
<input type="text" value="1200.00" name="row_total[]" id="rowtotal12_B4936" class=" rowTotal">
</td>
</tr>
</table>
<table>
<tr style="background:#2b2e76">
<th colspan="1" style="padding: 0;">
<p style="color:white">
Table Two
</p>
</th>
<th>
<p style="color:white" class="BundleB1027" id="B1027">Total : <span class="BundelRowTotalB1027">1750.00</span></p>
</th>
</tr>
<tr>
<td>
<input type="text" value="100.00" name="row_total[]" id="rowtotal16_B1027" class="rowTotal">
</td>
</tr>
<tr>
<td>
<input type="text" value="250.00" name="row_total[]" id="rowtotal17_B1027" class="rowTotal">
</td>
</tr>
</table>
我的jquery:
var Bsum = 0;
var BundelID = '';
$(".rowTotal").each(function() {
var RowID = $(this).attr('id');
var suffix = RowID.match(/\d+/)[0];
BundelID = $('.BundleB' + suffix).attr('id');
if (RowID.indexOf(BundelID) != -1) {
var BValue = $('#' + RowID).val();
if (!isNaN(BValue)) {
Bsum += parseFloat(BValue);
}
}
$('.BundelRowTotal' + BundelID).html(parseFloat(Bsum).toFixed(2));
});
这是我得到的输出
但我想输出应该如下
有任何建议请! 谢谢。
答案 0 :(得分:2)
尝试此操作:迭代每个表,然后迭代每个表的输入以计算总值
$(function(){
$('table').each(function(){
var $totalRow = $(this).find('span[class^="BundelRowTotal"]');
var total = 0.0;
$(this).find('input.rowTotal').each(function(){
total += parseFloat($(this).val()) || 0.0;
});
$totalRow.html(parseFloat(total).toFixed(2));
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr style="background:#2b2e76">
<th colspan="1" style="padding: 0;">
<p style="color:white">
Table One
</p>
</th>
<th>
<p style="color:white" class="BundleB4936" id="B4936">Total : <span class="BundelRowTotalB4936">1400.00</span></p>
</th>
</tr>
<tr>
<td>
<input type="text" value="200.00" name="row_total[]" id="rowtotal11_B4936" class="rowTotal">
</td>
</tr>
<tr>
<td>
<input type="text" value="1200.00" name="row_total[]" id="rowtotal12_B4936" class=" rowTotal">
</td>
</tr>
</table>
<table>
<tr style="background:#2b2e76">
<th colspan="1" style="padding: 0;">
<p style="color:white">
Table Two
</p>
</th>
<th>
<p style="color:white" class="BundleB1027" id="B1027">Total : <span class="BundelRowTotalB1027"></span></p>
</th>
</tr>
<tr>
<td>
<input type="text" value="100.00" name="row_total[]" id="rowtotal16_B1027" class="rowTotal">
</td>
</tr>
<tr>
<td>
<input type="text" value="250.00" name="row_total[]" id="rowtotal17_B1027" class="rowTotal">
</td>
</tr>
</table>
&#13;
答案 1 :(得分:2)
你刚遇到问题Ids Parse试试这个代码而不是你的代码
注意 - &gt;更改的行被评论。
<强>更新强>
$("table").each(function() {
var Bsum = 0;
var BundelID = '';
$(this).find(".rowTotal").each(function() {
var RowID = $(this).attr('id');
//var suffix = RowID.match(/\d+/)[0];
var suffix = RowID.split("_")[1];
console.log(suffix)
BundelID = $('.Bundle' + suffix).attr('id');
console.log(BundelID);
if (RowID.indexOf(BundelID) != -1) {
var BValue = $('#' + RowID).val();
if (!isNaN(BValue)) {
Bsum += parseFloat(BValue);
}
}
console.log(Bsum);
$('.BundelRowTotal' + BundelID).html(parseFloat(Bsum).toFixed(2));
});
});
Here是一份工作副本 注意 - &GT;我从HTML中删除了Sums,数字由代码计算
答案 2 :(得分:1)
var val1 = +$('#rowtotal11_B4936').val();
var val2 = +$('#rowtotal12_B4936').val();
$('.BundelRowTotalB4936').text(val1+val2);
var val3 = +$('#rowtotal16_B1027').val();
var val4 = +$('#rowtotal17_B1027').val();
$('.BundelRowTotalB1027').text(val4+val3);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<table>
<tr style="background:#2b2e76">
<th colspan="1" style="padding: 0;">
<p style="color:white">
Table One
</p>
</th>
<th>
<p style="color:white" class="BundleB4936" id="B4936">Total : <span class="BundelRowTotalB4936"></span></p>
</th>
</tr>
<tr>
<td>
<input type="text" value="200.00" name="row_total[]" id="rowtotal11_B4936" class="rowTotal">
</td>
</tr>
<tr>
<td>
<input type="text" value="1200.00" name="row_total[]" id="rowtotal12_B4936" class=" rowTotal">
</td>
</tr>
</table>
<table>
<tr style="background:#2b2e76">
<th colspan="1" style="padding: 0;">
<p style="color:white">
Table Two
</p>
</th>
<th>
<p style="color:white" class="BundleB1027" id="B1027">Total : <span class="BundelRowTotalB1027">1750.00</span></p>
</th>
</tr>
<tr>
<td>
<input type="text" value="100.00" name="row_total[]" id="rowtotal16_B1027" class="rowTotal">
</td>
</tr>
<tr>
<td>
<input type="text" value="250.00" name="row_total[]" id="rowtotal17_B1027" class="rowTotal">
</td>
</tr>
</table>
&#13;