Вы можете превратить это в плагин jQuery, чтобы упростить его повторное использование.
Ваша общая сумма должна начинаться с 0.
(function($) {
$.fn.calculateColumn = function(index) {
let total = 0;
this.find('tbody tr').each(function() {
var value = parseInt($(this).find('td').eq(index).text());
if (!isNaN(value)) { total += value; }
});
this.find('tfoot tr td').eq(index).text(total);
};
$.fn.calculateAllColumns = function() {
let self = this;
this.find('thead th').each(function(index) {
self.calculateColumn(index);
console.log(`Total for column ${$(this).text()}: ${self.find('tfoot tr td').eq(index).text()}`);
});
};
})(jQuery);
$(document).ready(function() {
$('table').calculateAllColumns();
});
table, th, td {
text-align: center;
font-size: smaller;
}
table {
border-collapse: collapse;
}
table tbody tr:nth-child(even) {
background: #F7F7F7;
}
th, td {
padding: 0.5em;
}
thead {
background: #DDD;
}
tfoot {
border-top: thick double #DDD;
}
td:not(:last-child) {
border-right: thin solid #EEE;
}
/** Stack snippet console */
.as-console-wrapper .as-console .as-console-row .as-console-row-code,
.as-console-wrapper .as-console .as-console-row:after {
font-size: 0.667em;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<thead>
<tr>
<th>A</th><th>B</th><th>C</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>5</td><td>10</td><td>15</td></tr>
<tr><td>10</td><td>20</td><td>30</td></tr>
</tbody>
<tfoot>
<tr>
<td>0</td><td>0</td><td>0</td>
</tr>
</tfoot>
</table>