Ver Mensaje Individual
  #12 (permalink)  
Antiguo 30/05/2007, 17:13
seconddj
 
Fecha de Ingreso: mayo-2007
Mensajes: 21
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Recuperar datos de tabla html

si cojes la opcion de
Código:
<TR style='cursor: pointer' onclick='muestra(001)'>
no te va a funcionar, ya que no pasas el objeto TR a la funcion.
Puedes pasarlo como segundo parametro

Código:
<TR style='cursor: pointer' onclick='muestra(001,this)'>
ahora la funcion sera..
Código:
function muestra(valor,objeto){
    alert(valor);// tiene que aparecer 001
    objeto.className=objeto.className=='marcado'?'desmarcado':'marcado';
}

ahora prueba de poner esta funcion

Código:
function muestra(valor,objeto){
    objeto.className=objeto.className=='marcado'?'desmarcado':'marcado';
    alert(valor);// tiene que aparecer 001
    alert(objeto.cells[0].childNodes[0].nodeValue);// tiene que aparecer 001 tambien
}
resumiendo, si a una funcion le pasa como parametro THIS, estas haciendo referencia al objeto que la llama. Con eso puedes obtener lo que quieras.

otro ejemplo:(stoy yo con ganas de hablar)


Código PHP:
<html>
<
head>
<
STYLE TYPE="text/css">
.
desmarcado{
    
backgroundtransparent;
}
.
marcado{
    
background#99F;
}

</
STYLE>
</
head>
<
body>
<
table id='TABLApepe' border='1'>
  <
thead>
    <
tr><th>nombre</th><th>apellido</th></tr>
  </
thead>
  <
tbody>
     <
tr style='cursor:pointer' class='desmarcado' onclick='muestra(this)'><td>pepe</td><td>goteras</td></tr>
  </
tbody>
</
table>

<
table id='TABLApepe2' border='1'>
    <
tr><th>nombre</th><th>apellido</th></tr>
    <
tr style='cursor:pointer' class='desmarcado' onclick='muestra(this)'><td>manolo</td><td>benito</td></tr>
</
table>
<
script type="text/javascript">
function 
muestra(objeto){
    
objeto.className=objeto.className=='marcado'?'desmarcado':'marcado';
    
alert(objeto.cells[0].childNodes[0].nodeValue);// tiene que aparecer pepe

    //si quiero saber el id de la tabla, que no deja de ser un parametro

    
alert(objeto.parentNode.parentNode.id);// tiene que aparecer TABLApepe o TABLApepe2 

    //parentNode lo que haces es preguntar por el padre del TR, osea el TBODY y luego su padre, que es la tabla y nos da el id

    
alert(objeto.offsetParent.id);// tambien aparecera TABLApepe o TABLApepe2

    //offsetParent nos situará en la tabla

}
</script>
</body>
</html> 

Ahora tengo 2 tablas, en una con THEAD y TBODY y la otra no.
En la funcion javascript va a preguntar por los padres y aunque no hayas puesto el tbody, realmente existe y cuenta para moverte a traves del objeto.
Si nos movemos con los hijos CHILDNODES pasa lo mismo, por eso utilizo mejor los parametros rows y cells.
ejemplo:
Código:
<script type="text/javascript">
alert(document.getElementById('TABLApepe2').rows[0].cells[0].childNodes[0].nodeValue);
</script>
te dará el texto de la primera celda, osea, 'nombre'

todo esto lo he investigado con firefox y realmente me ha ayudado mucho, ya que el DomInspector que viene al instalarlo, te daria la tabla en forma de arbol. ejemplo TABLApepe2.
Código:
TABLE
   |---text(vacio)
   |---TBODY
   |     |----TR
   |     |   |---TH
   |     |   |    '----text(aqui vendria nombre)
   |     |   '---TH
   |     |         '----text(aqui vendria apellido)
   |     |----text(vacio)
   |     |----TR
   |     |    |---TD
   |     |    |    '----text(aqui vendria manolo)
   |     |    '---TD
   |     |          '----text(aqui vendria benito)
   |     '----text(vacio)
   |....etc
un saludo...