views:

65

answers:

3

I have an HTML table with number values. What i need to do is to get all these values and add them together using jQuery.

Any ideas?


Example table:

http://pastie.org/998759

+2  A: 

You can call .each:

var sum = 0;

$('table td').each(function() {
    sum += parseFloat($(this).text());
});
SLaks
Got it working with some tweaking of this - thanks!
Ricky
+1  A: 

I'm going to give you some pseudo-code of how I would do it (mainly because I can't be stuffed writing the whole thing).

  1. Create an object/array/variables to store the totals.
  2. jQuery select the table
  3. Use .each() to loop through each tr.
  4. Loop each td and add the value to the relevant total.
  5. Once all of the tr have been looped through, do whatever you want :)

Hope this helps you out :)

EDIT: I was writing the code as if you wanted to total each column, rather than all cells into a single total.

Alastair Pitts
+1  A: 

It's already been answered. So just as a fun exercise:

// Give all arrays the power of summation    
Array.prototype.sum = function(){
    for( var i=0,sum=0;i<this.length;sum+=this[i++] );
    return sum;
}

// Use map for kicks
$(document).ready( function(){
    var result = $('table#mytable tr td').map( function(){
        return parseFloat( $(this).text() );
    }).get().sum();
});
Ken Redler