Reputation: 3
I've got table structure like this:
<table>
<tbody>
<tr>
<td></td>
<td></td>
<td class="price"></td>
(...)
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td class="price"></td>
(...)
<td></td>
</tr>
(...)
<tr>
<td></td>
<td></td>
<td class="price"></td>
(...)
<td></td>
</tr>
</tbody>
I just want to pull every td price value and sum it up. At the end i just need an variable with total value.
Upvotes: 0
Views: 27
Reputation: 74420
Using map()
and reducing it to the sum:
var sum = $('td.price').map(function () {
return parseInt(this.innerHTML, 10)
}).get().reduce(function (a, b) {
return a + b;
});
var sum = $('td.price').map(function () {
return parseInt(this.innerHTML, 10);
}).get().reduce(function (a, b) {
return a + b;
});
console.log(sum);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td></td>
<td></td>
<td class="price">5</td>
(...)
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td class="price">10</td>
(...)
<td></td>
</tr>
(...)
<tr>
<td></td>
<td></td>
<td class="price">20</td>
(...)
<td></td>
</tr>
</tbody>
<table>
Upvotes: 1
Reputation: 30557
Use jQuery each() to iterate over the td
elements and make sure you use parseInt
to avoid concatenating strings rather than summing
var sum = 0;
$('td.price').each(function(){
sum += parseInt($(this).text());
});
document.write('Sum is ' + sum);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td></td>
<td></td>
<td class="price">5</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td class="price">10</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td class="price">20</td>
<td></td>
</tr>
</tbody>
<table>
Upvotes: 0