No es necesario que concatenes el valor de
$i
al nombre de la clase, pues esta sí puede repetirse, lo que no puede suceder con el
id
.
Por otro lado, para hacer lo que buscas, puedes intentarlo de esta manera:
Cada checkbox:
Código Javascript
:
Ver originalfunction sumar(){
var checks = document.querySelectorAll(":checked"),
total = checks.length,
suma = 0;
for (var i = 0; i < total; i++){
var celda = checks[i].parentNode,
fila = celda.parentNode,
monto = fila.querySelector(".monto_cuota_lin").innerHTML;
monto = Number(monto.replace(",", ""));
suma += monto;
}
alert(suma);
}
El proceso es simple. Tomo a los checkbox marcados y calculo el total que estos representan, además, declaro una variable que acumulará el resultado de la suma de los valores. Con ayuda de un bucle, recorro al conjunto de checkbox marcados y, en cada iteración, tomo primero a la celda que lo contiene, luego a la fila que contiene a la celda y en dicha fila, busco a la que tenga por clase "monto_cuota_lin" y tomo el valor que contenga. Luego, como el valor contiene una coma, la retiro y ya que el método
replace
devuelve una cadena y no podemos sumar cadenas, tomo el valor numérico de la misma haciendo uso del objeto
Number
. Enseguida, sumo a la variable acumuladora el valor de la celda y repito el proceso hasta terminar con el resto de filas.
Finalmente, muestro la suma en un mensaje de alerta, aunque puedes mostrarlo en algún elemento HTML o en consola, ya decides tú.
DEMO
Saludos