Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/06/2015, 10:08
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Comparar el contenido de 2 celdas de una tabla

En el bucle do-while estás creando elementos <input> con el mismo id. De partida, ya estás cometiendo un error pues el valor de dicho atributo debe de ser único en todo el documento. Y también vas a tener problemas al momento de enviar los valores a procesar ya que usas el mismo nombre en todos.

Para lo segundo, te conviene usar un array de <input> para lo cual te basta con añadir dos corchetes [] al nombre. Para lo primero, debes de ejecutar una función por cada vez que escribas en los <input>, para lo cual puedes apoyarte en el evento oninput o en cualquiera de los eventos del teclado. Luego, mediante la propiedad parentNode, toma al elemento padre del <input> (que vendría siendo la celda) y luego al padre de esta (que viene siendo la fila); enseguida, tomas al <input> de la otra celda buscándola mediante su clase (las clases sí pueden repetirse) o nombre y comparas su valor con el del <input> en el que se produjo el cambio.

Un ejemplo:
Código HTML:
Ver original
  1. <tr>
  2.     <td>
  3.         <input type = "text" class = "foo" oninput = "cambio(this, '.bar')" />
  4.     <td>
  5.     <td>
  6.         <input type = "text" class = "bar" oninput = "cambio(this, '.foo')" />
  7.     <td>
  8. </tr>


Código Javascript:
Ver original
  1. function cambio(input, clase){
  2.     var fila = input.parentNode.parentNode,
  3.         otroInput = fila.querySelector(clase);
  4.  
  5.     if (input.value != otroInput.value){
  6.         input.style.backgroundColor = "red";
  7.     }
  8.     else{
  9.         input.style.backgroundColor = "white";
  10.     }
  11. }

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