La columna Creado debe tener "7" para la fila Total. La columna Canjeada debe tener "6" para la fila total. A veces, solo habrá dos meses de filas o podría haber diez filas. ¿Cómo puedo sumar los valores y pegarlos en la última fila de la tabla usando jQuery?

<table cellspacing="0" rules="all" border="1" id="DataGrid2" style="border-collapse:collapse;">
<tbody><tr>
    <td>CreationDate</td><td>Created</td><td>Redeemed</td>
</tr><tr>
    <td>August 2011</td><td>5</td><td>6</td>
</tr><tr>
    <td>July 2011</td><td>1</td><td>0</td>
</tr><tr>
    <td>June 2011</td><td>1</td><td>0</td>
</tr><tr>
    <td>Total</td><td>&nbsp;</td><td>&nbsp;</td>
</tr>

Imagen: ingrese la descripción de la imagen aquí

2
cici_88 1 sep. 2011 a las 01:42

5 respuestas

La mejor respuesta

Ok, este obtiene valores para ambas columnas ...

var c2Total = 0;
var c3Total = 0;

$("tr").find("td").each(function(){
    var curVal = parseInt($(this).text());

    if(!isNaN(curVal)){
        if($(this).index() == 1){
           c2Total += parseInt($(this).text());
        }
        else if($(this).index() == 2){
           c3Total += parseInt($(this).text());
        }
    }

});
$("#DataGrid2 tr:last td:eq(1)").text(c2Total );
$("#DataGrid2 tr:last td:eq(2)").text(c3Total );

Puede ver el violín aquí: http://jsfiddle.net/Broham/Rtm8p/2/

1
Abe Miessler 31 ago. 2011 a las 22:01

No es la solución más limpia, pero debería admitir un número infinito de columnas sin ninguna edición adicional:

$(function() {
    var totals = [];
    $("#DataGrid2 tr:gt(0)").each(function(){
        $(this).find("td:gt(0)").each(function(){
            var val = (parseInt($(this).text()) || 0);
            totals[$(this).index() - 1] = ((totals[$(this).index() - 1]) ? totals[$(this).index() - 1] + val : val);
        });             
    });

    for(var i = 0; i < totals.length; i++) {
        $("#DataGrid2 tr:last td:eq(" + (i + 1) + ")").text(totals[i]); 
    }

});
1
Mike Robinson 31 ago. 2011 a las 22:14
var total = 0;

$('#DataGrid2 td:nth-child(3)').each(function(){
    total += parseInt($(this).text()) || 0;
});

$('#DataGrid2 td:last').text(total);

http://jsfiddle.net/WPfWE/1/

0
Joseph Silber 31 ago. 2011 a las 21:49

Para cada columna i, recorra cada fila de la tabla (es decir, cada <tr>), haciendo un seguimiento de una suma acumulada para el i th <td> en esa fila.

0
tskuzzy 31 ago. 2011 a las 21:46

Tengo un complemento JQuery, Sumtr , que realiza la suma en un arbitrario mesa. De manera predeterminada, se supone que desea sumar filas en <tbody> para las celdas con la clase .sum. Divide los resultados en filas con la clase .summary.

Los valores predeterminados son fácilmente configurables.

http://jsfiddle.net/vaNZB/.

0
Larsenal 28 mar. 2012 a las 21:00