Foros del Web » Programando para Internet » Javascript »

obtener solo el valor de un <tr> con onClick?

Estas en el tema de obtener solo el valor de un <tr> con onClick? en el foro de Javascript en Foros del Web. hola que tal tengo una tabla dinamica de datos y quisiera obtener el valor del td solo con darle click... la unica forma que se ...
  #1 (permalink)  
Antiguo 18/07/2012, 15:50
 
Fecha de Ingreso: julio-2012
Mensajes: 2
Antigüedad: 11 años, 9 meses
Puntos: 0
Pregunta obtener solo el valor de un <tr> con onClick?

hola que tal tengo una tabla dinamica de datos y quisiera obtener el valor del td solo con darle click... la unica forma que se me ocurre es con el onclick..

<tr <?php if($i%2 != 0){ echo "class='odd'"; } ?> onclick="datosTextos();">

<td><input type="text" readonly="readonly" id="val"
value="<?php echo $codigol['codigo'];?>"/>
  #2 (permalink)  
Antiguo 18/07/2012, 16:35
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: obtener solo el valor de un <tr> con onClick?

bienvenido al foro.

usa el highlight para postear código, mostra el codigo de tu función datosTextos();
y todo el codigo html.
Acá solo damos javascritp asi que eso de <?php .... va en el foro de php, para hacerlo con javascript podes usar innerHTML sobre ese td que le haces click., ponerle un id a ese td y cuando le haces click entonces el innerHTML de ese td lo mostras en el value del input ese que tenes ahi
  #3 (permalink)  
Antiguo 18/07/2012, 17:12
 
Fecha de Ingreso: enero-2010
Mensajes: 19
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: obtener solo el valor de un <tr> con onClick?

Cambia tu html por esto:

Código HTML:
<table width="100%" border="2">
    <!-- Agregue un tributo data-* para poder recuperar el valor, el nombre de data puede ser lo que tú quieras en este casi es valor -->
    <tr data-valor="valor" class="click">
        <td>Prueba</td>
    </tr>
    <tr data-valor="valor2" class="click">
        <td>Prueba</td>
    </tr>
    <tr data-valor="valor3" class="click">
        <td>Prueba</td>
    </tr>
</table> 
Agregue el atributo data para poder recuperar el valor de tu tr, ahora con una libería de Javascript en este caso jQuery has esto

Código Javascript:
Ver original
  1. $(function(){
  2.    
  3.     $(".click").click(function(e) {
  4.         e.preventDefault();
  5.         var data = $(this).attr("data-valor");
  6.         alert(data);    
  7.     });
  8.  
  9. });

Con eso podrías recuperar el valor de tu tr, te adjunto mi jsfidle para que lo puedas probar recuerda darle click al boton run para que lo veas en funcionamiento, haz click sobre los tr para que funcione el alerta.

http://jsfiddle.net/DiegoSeC/CQdMU/
  #4 (permalink)  
Antiguo 18/07/2012, 18:25
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: obtener solo el valor de un <tr> con onClick?

Cita:
Iniciado por Diego89 Ver Mensaje
Cambia tu html por esto:

Código HTML:
<table width="100%" border="2">
    <!-- Agregue un tributo data-* para poder recuperar el valor, el nombre de data puede ser lo que tú quieras en este casi es valor -->
    <tr data-valor="valor" class="click">
        <td>Prueba</td>
    </tr>
    <tr data-valor="valor2" class="click">
        <td>Prueba</td>
    </tr>
    <tr data-valor="valor3" class="click">
        <td>Prueba</td>
    </tr>
</table> 
Agregue el atributo data para poder recuperar el valor de tu tr, ahora con una libería de Javascript en este caso jQuery has esto

Código Javascript:
Ver original
  1. $(function(){
  2.    
  3.     $(".click").click(function(e) {
  4.         e.preventDefault();
  5.         var data = $(this).attr("data-valor");
  6.         alert(data);    
  7.     });
  8.  
  9. });

Con eso podrías recuperar el valor de tu tr, te adjunto mi jsfidle para que lo puedas probar recuerda darle click al boton run para que lo veas en funcionamiento, haz click sobre los tr para que funcione el alerta.

http://jsfiddle.net/DiegoSeC/CQdMU/
Convengamos que usar jQuery solo para eso es un exabrupto
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Recuperar datos de celdas en una fila</title>
  5. <style type="text/css">
  6. /*<![CDATA[*/
  7. tr{
  8. background: cyan;
  9. }
  10. /*]]>*/
  11. <script type="text/javascript">
  12. //<![CDATA[
  13. function valor_celda(celda){
  14. alert(celda.innerHTML);
  15. }
  16. window.onload = function(){
  17. var tags_td = new Array();
  18. var tags_td=document.getElementsByTagName('td');
  19. for (i=0; i<tags_td.length; i++) {
  20.            if (tags_td[i].addEventListener) {   // IE9 y el resto
  21.                tags_td[i].addEventListener ("click", function () {valor_celda(this)}, false);
  22.            }
  23.            else {
  24.                if (tags_td[i].attachEvent) {    // IE9 -
  25.                    tags_td[i].attachEvent ('onclick',  function () {valor_celda(this)}, false);
  26.                }
  27.            }
  28. }
  29. }
  30. //]]>
  31. </head>
  32. <table border="1" width="50%">
  33. <tr>
  34. <td>celda 1</td><td>celda 2</td>
  35. </tr>
  36. <tr>
  37. <td>celda 3</td><td>celda 4</td>
  38. </tr>
  39. <tr>
  40. <td>celda 5</td><td>celda 6</td>
  41. </tr>
  42. </body>
  43. </html>
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 18/07/2012, 20:23
 
Fecha de Ingreso: julio-2012
Mensajes: 2
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: obtener solo el valor de un <tr> con onClick?

Gracias eso era lo que estaba buscando
  #6 (permalink)  
Antiguo 18/07/2012, 20:37
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 3 meses
Puntos: 12
Respuesta: obtener solo el valor de un <tr> con onClick?

Hola @emprear muy interesante lo que dices, pero una sola cosa con el código que propones usar.

Los usuarios que usan WinXP y son fieles al navegador IE8, no les funcionará el código ese y recibirán un mensaje de alerta: undefined

¿Se puede agregar una compatibilidad con dicho Browser?


Última edición por MaxDgy; 18/07/2012 a las 20:43 Razón: Adaptar el texto
  #7 (permalink)  
Antiguo 18/07/2012, 21:20
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: obtener solo el valor de un <tr> con onClick?

Cita:
Iniciado por MaxDgy Ver Mensaje
Hola @emprear muy interesante lo que dices, pero una sola cosa con el código que propones usar.

Los usuarios que usan WinXP y son fieles al navegador IE8, no les funcionará el código ese y recibirán un mensaje de alerta: undefined

¿Se puede agregar una compatibilidad con dicho Browser?

Si, efectivamente cometí un error, el problema en si es con el uso de this en attachEvent, que lo puse para simplificar
Podemos hacer esto
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Recuperar datos de celdas en una fila</title>
  5. <style type="text/css">
  6. /*<![CDATA[*/
  7. tr{
  8. background: cyan;
  9. }
  10. /*]]>*/
  11. <script type="text/javascript">
  12. //<![CDATA[
  13. function valor_celda(celda){
  14. alert(celda.innerHTML);
  15. }
  16. window.onload = function(){
  17. var tags_td = new Array();
  18. var tags_td=document.getElementsByTagName('td');
  19. for (i=0; i<tags_td.length; i++) {
  20.            if (tags_td[i].addEventListener) {   // IE9 y el resto
  21.                tags_td[i].addEventListener ("click", function () {valor_celda(this)}, false);
  22.            }
  23.            else {
  24.                if (tags_td[i].attachEvent) {    // IE9 -
  25. //                    tags_td[i].attachEvent ('onclick',  function () {valor_celda(this)}, false);
  26.   tags_td[i].setAttribute('onclick', 'valor_celda(this)');                
  27.                    
  28.                }
  29.            }
  30. }
  31. }
  32.  
  33. //]]>
  34. </head>
  35. <table border="1" width="50%">
  36. <tr>
  37. <td>celda 1</td><td>celda 2</td>
  38. </tr>
  39. <tr>
  40. <td>celda 3</td><td>celda 4</td>
  41. </tr>
  42. <tr>
  43. <td>celda 5</td><td>celda 6</td>
  44. </tr>
  45. </body>
  46. </html>

es decir, utilizamos setAttribute, pero aún nos queda fuera IE7.
Otra alternativa, ahora si compatible con IE 6/7/8/9/ y el resto, sería definir el evento en cada elemento
<td onclick="valor_celda(this)">celda 1</td><td onclick="valor_celda(this)">celda 2</td>
Esta ultima posibilidad no sería dificil de implementar en este caso ya que la tabla es dinámica según lo dicho por @neram7

Saludos

PD:
Edito para hacer un agregado, yo hice esto pensando en los <td> como dice el post, me quedé clavado en "esto obtener el valor del td solo con darle click" y no en los <tr> lo que no es exactamente lo mismo

Algo así para las celdas de un misma fila

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>Recuperar datos de celdas en una fila</title>
  5. <style type="text/css">
  6. /*<![CDATA[*/
  7. tr{
  8. background: cyan;
  9. }
  10. /*]]>*/
  11. <script type="text/javascript">
  12. //<![CDATA[
  13. function recuperarFila(idfila) {
  14. var elTableRow = document.getElementById(idfila);
  15. elTableRow.style.backgroundColor =(elTableRow.style.backgroundColor=="green")?'cyan':'green';
  16.  
  17. if(elTableRow.style.backgroundColor == 'green'){
  18. var elTableCells = elTableRow.getElementsByTagName("td");
  19.    for (var i=0; i<elTableCells.length; i++) {
  20.    alert(elTableCells[i].innerHTML);
  21.    }
  22. }
  23. }
  24.  
  25. function vhtml(){
  26. var divx =document.getElementById('x');
  27. alert(divx.innerHTML);
  28. }
  29. //]]>
  30. </head>
  31.     <div id="x">
  32. <table border="1" width="50%">
  33. <tr id="fila_uno" onclick="recuperarFila(this.id)">
  34. <td>celda 1</td><td>celda 2</td>
  35. </tr>
  36. <tr id="fila_dos" onclick="recuperarFila(this.id)">
  37. <td>celda 3</td><td>celda 4</td>
  38. </tr>
  39. <tr id="fila_tres" onclick="recuperarFila(this.id)">
  40. <td>celda 5</td><td>celda 6</td>
  41. </tr>
  42. </div>
  43. <button onclick="vhtml()">xxx</button>
  44. </body>
  45. </html>

se simplifica usando el id de cada fila
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 18/07/2012 a las 21:33
  #8 (permalink)  
Antiguo 18/07/2012, 22:42
 
Fecha de Ingreso: enero-2011
Ubicación: Argentina
Mensajes: 80
Antigüedad: 13 años, 3 meses
Puntos: 12
Respuesta: obtener solo el valor de un <tr> con onClick?

Que grande emprear!! Ahora sí, tiene compatibilidad y muy bien explicado!!

Ahora me pondré a repasar todo a full.

Saludos!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:22.