¿El cálculo debe se automático o habría que pulsar un botón para averiguar el valor total que representa la suma de los valores de las tres cajas en cada fila?. De ser la segunda opción, podrías intentarlo de este modo:
Código Javascript
:
Ver originalvar botones = document.getElementsByTagName("button"),
tabla = document.getElementsByTagName("table")[0];
for (i = 0, limite = botones.length; i < limite; i++){
(function(indice){
botones[indice].addEventListener("click", function(){
var fila = document.getElementsByTagName("tr")[indice],
cajas = fila.getElementsByTagName("input"),
resultado = document.getElementsByClassName("resultado")[indice],
total = 0;
for(j = 0, limit = cajas.length; j < limit; j++){
if (!cajas[j].className.length)
total += cajas[j].value.length ? Number(cajas[j].value) : 0;
}
resultado.value = total;
}, false);
})(i);
}
Para este ejemplo, asumo que en cada fila, hay 3 cajas con valores ingresados por el usuario, una cuarta caja en donde se mostrará la suma de los valores de las 3 cajas anteriores y un botón que hará el cálculo. Tomo la tabla y todos los botones existentes en la tabla (si no quieres conflictos con otros botones que estén fuera de la tabla, te recomiendo asignar una clase para todos los botones y luego los tomas por el nombre de la clase). Luego, con ayuda de un bucle, recorro todos los botones que tomé previamente, asignándole a cada uno el evento
click, para que cuando pulsemos cada botón, ejecute una función. En dicha función, tomo la fila equivalente al botón (si le doy clic al cuarto botón, se tomará la cuarta fila), todas las cajas que se encuentren en dicha fila, la caja del resultado (la cual tomo por el nombre de su clase, ya que las otras 3 cajas no tienen una clase establecida para así diferenciarlas de ésta) y establezco un acumulador para sumar todos los valores.
Con ayuda de otro bucle, recorro las cajas de la fila, si la caja no posee una clase, quiere decir que es una de las primeras tres cajas, procedo a tomar su valor y lo evalúo, si existe un valor (si la caja contiene un valor), lo transformo en tipo numérico y lo adiciono a
total, caso contrario (si la caja está vacía), le adiciono cero, es decir, no se altera el valor acumulado.
Finalmente, asigno el valor de dicha suma a la caja del resultado. Todo esto se ejecuta dentro de una función anónima auto-ejecutable, la cual utilizo para poder aplicar correctamente las funciones a cada botón.
El resultado se vería así (con datos de ejemplo):
http://jsbin.com/ifIXIZuf/1
Saludos