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{
background: transparent;
}
.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...