2010-11-25 14 views
9

Si obtuve un nodo principal, ¿cómo puedo recorrer cada tercer nodo secundario?Javascript: Loop a través de cada tercer nodo hijo

que tengo ahora este código:

var parents = document.getElementById('ID_of_parent'); 
var first_child = parents.firstChild.data.id; 
alert(parents); 
alert(first_child); 

Para los padres, lo tengo ahora '[objeto HTMLDivElement]' y para first_child Tengo ' indefinido'.

+0

¿Qué le proporciona 'alert (parents.firstChild.data)' y 'alert (parents.firstChild.data.id)'? Aquí es donde yace el problema. –

+0

.data me da "" (vacío) y .data.id me da "undefined" –

Respuesta

21
var nodes = document.getElementById('ID_of_parent').childNodes; 
for(i=0; i<nodes.length; i+=3) { 
    alert(nodes[i]); 
} 
+0

Esto devuelve 'document.getElementById ("ID_of_parent"). ChildNodes no es una función'? –

+0

@Florian solucionado, lo siento. –

1

La colección element.childNodes es lo que necesita. Debe omitir los nodos secundarios que no son elementos (element.nodeType != 1).

var d = document.getElementById("ID_of_parent"); 
    if (d) 
    { 
     for(var i = 0; i < d.childNodes.length; i++) 
     { 
      if (d.childNodes[i].nodeType == 1) 
       alert(typeof(d.childNodes[i]) + "- " + d.childNodes[i].nodeType + ": " + d.childNodes[i].tagName + " - " + d.childNodes[i].innerHTML); 
     } 
    } 
1

¿Consideras jQuery?

$("#ID_of_parent > *:nth-child(3n)").each(function() { alert(this);}); 

he implementado una demo aquí: http://jsbin.com/ahije4/5

+0

Gracias, exactamente lo que necesitaba: solo etiquetas de devolución (no los nodos de texto, es decir). También usar nth-child-selector en lugar de jugar con .children(), es bastante genial. –

0
function makeSkippingIterator(parent,stride) { 
    if(isNaN(stride) || stride < 1) 
     stride = 1 
    var node = parent.firstChild 
    return function() { 
     var returnable = node, 
      cnt = stride 
     while(--cnt >= 0 && node) { 
      node = node.nextElementSibling 
     } 
     return returnable 
    } 
} 

seguir llamando el generador a volver hasta que no tiene ningún valor para usted.

Cuestiones relacionadas