Foros del Web » Programando para Internet » Javascript »

Moverse a través del DOM

Estas en el tema de Moverse a través del DOM en el foro de Javascript en Foros del Web. Hola, tengo una tabla donde muestro algunos registros, mi duda es como acceder a el valor de una celda a tráves del DOM, uso javascript ...
  #1 (permalink)  
Antiguo 10/06/2012, 13:29
 
Fecha de Ingreso: junio-2012
Ubicación: Durango
Mensajes: 10
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Moverse a través del DOM

Hola, tengo una tabla donde muestro algunos registros, mi duda es como acceder a el valor de una celda a tráves del DOM, uso javascript y php, en la tabla tengo una celda denominada "Eliminar" y esta celda contiene un icono, es una imagen y en su evento "onclick" llamo a la funcion javascript donde quiero obtener el valor de una celda anterior que no estoy mostrando.
esta es la funcion js

function del_prod(){
var icon = document.getElementsByName('icon_del');
var td_id_producto = icon.
loadAsync("controller/del_prod.php?id_producto=" + td_id_producto + "","div_alert_add_prod");
load_table();
}

la celda anterior tiene un valor que quiero enviar como parametro por la url. Como obtengo dicho valor, se que me tengo que mover a tráves del DOM pero no se como.
  #2 (permalink)  
Antiguo 10/06/2012, 13:45
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: Moverse a través del DOM

Te dejo un ejemplo (aplicado a otra cosa) pero en el cual acceder al contenido de la celda clickeada, tendrías que adaptarlo a tus necesidades

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. </head>
  26. <table border="1" width="50%">
  27. <tr id="fila_uno" onclick="recuperarFila(this.id)">
  28. <td>celda 1</td><td>celda 2</td>
  29. </tr>
  30. <tr id="fila_dos" onclick="recuperarFila(this.id)">
  31. <td>celda 3</td><td>celda 4</td>
  32. </tr>
  33. <tr id="fila_tres" onclick="recuperarFila(this.id)">
  34. <td>celda 5</td><td>celda 6</td>
  35. </tr>
  36. </body>
  37. </html>

basicamente el array() generado por
var elTableCells = elTableRow.getElementsByTagName("td");
es recorrido y se obtiene el innerHTML, que es el contenido de la celda, de cada una

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 10/06/2012, 14:03
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Moverse a través del DOM

si usas la función previousSibling() es sencillo
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #4 (permalink)  
Antiguo 10/06/2012, 16:54
 
Fecha de Ingreso: junio-2012
Ubicación: Durango
Mensajes: 10
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Moverse a través del DOM

pues sigo intentado, ahora la estructura esta asi:

<tr>
<td style='display:none;'><img src='' name='' id='icon_delete' onclick='obten_id'></td>
<td id='id_producto'>8</td>
</tr>

<script>
function obten_id(){
var icono = document.getElementById('icon_delete').nextSibling .innerHTML; ???
ajax("procesa.php?icono=" + icono + "", "div");
}
</script>

??? se hará asi? no obtengo nada, no puedo obtener el valor de la celda.
ojo! la celda no la estoy mostrando, esta oculta.
  #5 (permalink)  
Antiguo 10/06/2012, 17:42
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Moverse a través del DOM

primeramente hablabas de una celda anterior, de ahí que te recomendara previousSibling(). ahora usas nextSibling() por que es una celda posterior

pero lo mas destacado es que intentas invocar una función desde un elemento que está oculto eso no es posible
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #6 (permalink)  
Antiguo 10/06/2012, 20:11
 
Fecha de Ingreso: junio-2012
Ubicación: Durango
Mensajes: 10
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Moverse a través del DOM

no me entediste, el metodo lo invoco desde un ccelda visible, pero ya estoy cerca de la solucion: tienes razon la celda estaba antes del metodo,ahora la movi despues del metodo pero al final eso es irrelevante.
mi codigo es el sig y estoy cerca de logralo, de hecho solo falta pasarle a la funcion el parametro de donde se haga clic.

function del_prod(){
var icon = document.getElementById('icon_del').parentNode.nex tSibling.nextSibling.innerHTML;
alert(icon);
loadAsync("controller/del_prod.php?id_producto=" + td_id_producto + "","div_alert_add_prod");
load_table();
}


saludos. Gracias por sus opiniones fueron de ayuda y juntos compartimos ideas y conocimiento, "Porque el conocimiento no vale nada si no lo compartimos"
  #7 (permalink)  
Antiguo 11/06/2012, 05:04
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Moverse a través del DOM

Cita:
Iniciado por elnew_luis Ver Mensaje
<td style='display:none;'><img src='' name='' id='icon_delete' onclick='obten_id'></td>
si te he entendido. eres tú, el que no te aclaras. por cierto no estás invocando a la función, pero creo que eso ya lo has solventado.

respondiendo a tu último post, el código es correcto si tu intención es obtener el valor da la celda adyacente "8".

si no muestras la estructura, no voy a ser yo quién me ponga a jugar a las adivinanzas
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: dom, funcion, js, php
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 16:59.