jump to navigation

childNodes en Firefox Miércoles, 4 abril 2007

Posted by israelof in General.
2 comments

Hace unos días publiqué un post en el que hacía referencia a los problemas que había tenido en la genaración de un XML desde PHP. Retomando un poco más el tema, vamos a ver el comportamiento que tiene Firefox al parsear una estructura XML (en nuestro caso un código HTML) cuando utilizamos childNodes, para obtener los nodos contenidos dentro de un nodo padre.

Para entenderlo partiremos del siguiente código HTML:


<div id=”nodo_padre”>
   <div id=”nodo_hijo_1″></div>
   <div id=”nodo_hijo_2″></div>
</div>

Si a continuación ejecutamos el código javascript:


<script>
 var array_nodos = document.getElementById(‘nodo_padre’).childNodes;
 alert(array_nodos.length);
</script>

En la ventana de alerta usando Firefox obtendremos un valor de 5, mientras que en Internet Explorer nos dará 2. Esto se debe a que Firefox interpreta los retornos de carro (\n) como nodos de texto.

Si lo que queremos es recorrer el array de nodos saltándonos los retornos de carro, deberemos realizar algo como lo siguiente:


<script>
  var array_nodos = document.getElementById(‘nodo_padre’).childNodes;
  for (var i=0; i<array_nodos.length; i++) {
     if(array_nodos[i].nodeType == 1) {
        hacer_algo(array_nodos[i]);
     }
  }
</script>

De este modo saltaremos todos los nodos que no sean del tipo elemento.

Anuncios