Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/01/2014, 17:18
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Como obtengo el valor de este elemento de mi tabla html

¿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 original
  1. var botones = document.getElementsByTagName("button"),
  2.     tabla = document.getElementsByTagName("table")[0];
  3.  
  4. for (i = 0, limite = botones.length; i < limite; i++){
  5.   (function(indice){
  6.     botones[indice].addEventListener("click", function(){
  7.       var fila = document.getElementsByTagName("tr")[indice],
  8.           cajas = fila.getElementsByTagName("input"),
  9.           resultado = document.getElementsByClassName("resultado")[indice],
  10.           total = 0;
  11.    
  12.       for(j = 0, limit = cajas.length; j < limit; j++){
  13.         if (!cajas[j].className.length)
  14.           total += cajas[j].value.length ? Number(cajas[j].value) : 0;
  15.       }
  16.    
  17.       resultado.value = total;
  18.     }, false);
  19.   })(i);
  20. }

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
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand