Javascript 如何为每个动态生成的表获取列的总和?
我有一个页面,每个日期都有动态生成的表。每个日期都有一列,显示每个产品的支付金额。例如:Javascript 如何为每个动态生成的表获取列的总和?,javascript,jquery,html,Javascript,Jquery,Html,我有一个页面,每个日期都有动态生成的表。每个日期都有一列,显示每个产品的支付金额。例如: <table class="table"> <thead> <tr> <th> <b>Product</b> </th> <th>
<table class="table">
<thead>
<tr>
<th>
<b>Product</b>
</th>
<th>
<b>Amount</b>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Kroket
</td>
<td>
€ 5.00 <!-- Dynamically generated -->
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>Total:</td>
<td class="total"></td>
</tr>
</tfoot>
</table>
当我只有一个表时,类似的函数也会起作用。但是在这里我无法让它工作,因为它显示每个表中所有表的总数。我无论如何都不是JavaScript/JQuery方面的专家,如果有人能给我提供更多的见解,我将不胜感激
function updateTotalOfTotals() {
$(".table").each(function () {
var totalSum = 0;
//target only the trs from current table
var $dataRow = $(this).find('tbody tr');
$dataRow.each(function () {
$(this).find('td:nth-child(2)').each(function (i) {
totalSum += parseFloat($(this).text().replace("€", ""));
});
});
var twoPlacedFloatTotalSum = parseFloat(totalSum).toFixed(2);
//target only the total from current table
$(this).find(".total").html(twoPlacedFloatTotalSum);
});
}
演示:
演示:
演示:
演示:
var$dataRow=$(this.find('tbody tr')
和$(this.find('.total').html(TwoPlacedFloatTolSum)代码>$(“.total”)。每个(函数(i){
必须更改为只针对一个total
元素谢谢我现在就知道了!:)var$dataRow=$(this)。find('tbody tr');
和$(this)。find('.total').html(twoPlacedFloatTotalSum);
$(.total”)。每个(函数(i){
必须更改为只针对一个total
元素谢谢我现在知道了!:)var$dataRow=$(this.find('tbody tr');
和$(this.find('.total').html(TwoPlacedFloatTolSum);
$(.total”)。每个(函数(I){
必须更改为只针对一个total
元素谢谢我现在知道了!)var$dataRow=$(this.find('tbody tr');
和$(this.find('.total').html(TwoplacedFloatTolSum);
$(.total”)。每个(函数(i){
必须更改为只针对一个total
元素谢谢我现在就知道了!:@user2609980:除了工作答案(+1),如果需要,我可能会考虑将实际数值和货币作为数据属性添加到td
,即:€5.00
,这样您就可以简化代码,而不必担心货币符号。这还意味着您不必在符号更改时更新解析代码。还允许您更灵活的货币转换等等。@FrançoisWahl是的,你是对的……否则格式可能会在解析value@FrançoisWahl Aha听起来像是一个聪明的举动。值来自Razor/C#如下:@Html.DisplayFor(modelItem=>order.UnitPrice)这个模型有一个属性,可以输出一欧元。这当然可以改变,然后我做一些类似的事情,给我5.00欧元。所以当我改变模型不显示欧元时,这是一个非常有价值的更新,有一个应用程序也可以在非欧元区使用。感谢t他提示!@ArunPJohny格式化怎么会导致其他问题?现在总是显示一个欧元。@user2609980:您的模型可以有一个助手返回显示值,而其余的是分开的。例如:@Html.DisplayFor(modelItem=>order.DisplayUnitPrice)/@user2609980:除了工作答案(+1),如果需要,我可能会考虑将实际数值和货币作为数据属性添加到td
,即:€5.00
,这样您就可以简化代码,而不必担心货币符号。这还意味着您不必在符号更改时更新解析代码。还允许您更灵活的货币转换等等。@FrançoisWahl是的,你是对的……否则格式可能会在解析value@FrançoisWahl Aha听起来像是一个聪明的举动。值来自Razor/C#如下:@Html.DisplayFor(modelItem=>order.UnitPrice)这个模型有一个属性,可以输出一欧元。这当然可以改变,然后我做一些类似的事情,给我5.00欧元。所以当我改变模型不显示欧元时,这是一个非常有价值的更新,有一个应用程序也可以在非欧元区使用。感谢t他提示!@ArunPJohny格式化怎么会导致其他问题?现在总是显示一个欧元。@user2609980:您的模型可以有一个助手返回显示值,而其余的是分开的。例如:@Html.DisplayFor(modelItem=>order.DisplayUnitPrice)/@user2609980:除了工作答案(+1),如果需要,我可能会考虑将实际数值和货币作为数据属性添加到td
,即:€5.00
,这样您就可以简化代码,而不必担心货币符号。这还意味着您不必在符号更改时更新解析代码。还允许您更灵活的货币转换等等。@FrançoisWahl是的,你是对的……否则格式可能会在解析value@FrançoisWahl Aha听起来像是一个聪明的举动。值来自Razor/C#如下:@Html.DisplayFor(modelItem=>order.UnitPrice)这个模型有一个属性,可以输出一欧元。这当然可以改变,然后我做一些类似的事情,给我5.00欧元。所以当我改变模型不显示欧元时,这是一个非常有价值的更新,有一个应用程序也可以在非欧元区使用。感谢t他提示!@ArunPJohny格式化怎么会导致其他问题?现在总是显示一个欧元。@user2609980:您的模型可以有一个助手返回显示值,而其余的是分开的。例如:@Html.DisplayFor(modelItem=>order.DisplayUnitPrice)/@user2609980:除了工作答案(+1),如果需要,我可能会考虑将实际数值和货币作为数据属性添加到td
,即:€5.00
,这样您就可以简化代码,而不必担心货币符号。这还意味着您不必在符号更改时更新解析代码。还允许您更灵活的货币转换等等。@FrançoisWahl是的,你是对的……否则格式可能会在解析value@FrançoisWahl-Aha听起来是个聪明的举动
function updateTotalOfTotals() {
$(".table").each(function () {
var totalSum = 0;
//target only the trs from current table
var $dataRow = $(this).find('tbody tr');
$dataRow.each(function () {
$(this).find('td:nth-child(2)').each(function (i) {
totalSum += parseFloat($(this).text().replace("€", ""));
});
});
var twoPlacedFloatTotalSum = parseFloat(totalSum).toFixed(2);
//target only the total from current table
$(this).find(".total").html(twoPlacedFloatTotalSum);
});
}