Foros del Web » Programando para Internet » Javascript »

Rastreo de todos los hijos

Estas en el tema de Rastreo de todos los hijos en el foro de Javascript en Foros del Web. Hola foreros! Espero que los reyes os trajeran un monton de regalos, jeje... por lo que es a mi poco, jeje. Mirar estoy bastante atascado ...
  #1 (permalink)  
Antiguo 08/01/2010, 10:53
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Rastreo de todos los hijos

Hola foreros!

Espero que los reyes os trajeran un monton de regalos, jeje... por lo que es a mi poco, jeje. Mirar estoy bastante atascado en un problemilla para rastrear a todos los hijos de un elemento. He estado mirando algun sistema para reproducir arboles, pero no consigo hacer lo siguiente:

Código HTML:
<div id="bisabuelo">
      <div id="abuelo">
            <div id="padre">
                 <div id="hijo">
                 </div>
                 <div id="hija">
                 </div>
            <div id="madre">
            </div>
       </div>
</div> 
Lo que busco hacer es una funcion que pase por cada elemento empezando por el "bisabuelo", pero no se como hacerlo, jeje. Es decir algo asi:
Código PHP:
function rastreo()
    {    
        
elemento document.getElementById("bisabuelo");
        
//ahora pasamos por los hijos del elemento y luego por los hijos de sus hijos asi hasta terminar la descendencia
        
for (var i=0;i<elemento.childNodes.length;i++)
            {        
                        
//ahora ejecutariamos una funcion que enviaria cada hijo a no se donde!.
                
alert(elemento.childNodes[i].id);        
            }
    } 
Es decir, la funcion pasaria con este orden:
Abuelo, padre, hijo, hija, madre...

Se que es un poco probre la funcion... pero es que esto de las funciones recursivas me puede... no me da el burulo para hacerlas!
  #2 (permalink)  
Antiguo 08/01/2010, 11:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Rastreo de todos los hijos

Como bien comentas, debes hacer una función recursiva:
Código Javascript:
Ver original
  1. function hijos(padre) {
  2.     var i = 0;
  3.     for (i = 0; i < padre.childNodes.length; i++) {
  4.         alert(padre.childNodes[i].id);
  5.         if (padre.childNodes[i].childNodes) {
  6.             hijos(padre.childNodes[i]);
  7.         }
  8.     }
  9. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 08/01/2010, 11:21
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Rastreo de todos los hijos

Hola David!

Muchas gracias!... la verdad es que cada vez que os veo responderme me da una pena increible!... que envidia me dais... yo por ejemplo intento responder algun tema de javascript de la primera pagina, donde algunas veces queda alguno sin respuesta y me es imposible... ains... que envidia!... y nada sana, jeje.

Esperemos que dentro de poco pueda ayudar... es que ni buscando en google la respuesta puedo responder... jeje :P

Hasta pronto!... gracias!.
  #4 (permalink)  
Antiguo 08/01/2010, 16:56
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Rastreo de todos los hijos

Hola:

Con nodos la recursividad no creo que lleve peligro, pero si quisieras hacer recursividad con objetos podría ser peligroso...Sé que no es el caso, pero quien sabe en el futuro que harás...

Te paso un par de enlaces para que veas el código... el Nuevo destripador y el Inspector DOM... para el segundo (el primero en implementar) no tuve problemas en la recursión... pero con el otro tuve que generar los nodos bajo demanda porque se generaba un bucle infinito (uno de los peores problemas de las recursiones)... y sobre los abueletes... matusalem es document.documentElement (o sea el tag html)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: rastreo
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 09:10.