Tengo el siguiente:¿Cómo hago este ciclo todos los niños recursivamente?
for (var i = 0; i < children.length; i++){
if(hasClass(children[i], "lbExclude")){
children[i].parentNode.removeChild(children[i]);
}
};
me gustaría que colocar a través de los niños de todos los niños, etc (no sólo el nivel superior). He encontrado esta línea, que parece hacer eso:
for(var m = n.firstChild; m != null; m = m.nextSibling) {
Pero estoy claro de cómo me refiero a que el niño actual si hago que el interruptor? Ya no tendría que aclarar la posición del índice del niño. ¿Alguna sugerencia?
Gracias!
Actualización:
Ahora estoy usando la siguiente, según responder sugerencias. ¿Es esta la forma correcta/más eficiente de hacerlo?
function removeTest(child) {
if (hasClass(child, "lbExclude")) {
child.parentNode.removeChild(child);
}
}
function allDescendants(node) {
for (var i = 0; i < node.childNodes.length; i++) {
var child = node.childNodes[i];
allDescendants(child);
removeTest(child);
}
}
var children = temp.childNodes;
for (var i = 0; i < children.length; i++) {
allDescendants(children[i]);
};
¿Sabe cuántas matrices ha anidado aquí? – thecoshman
Simplemente con el nombre 'm':' m.parentNode.removeChild (m) '. Puede haber un problema, sin embargo, porque eliminar un nodo y luego tomar su 'nextSibling' (en la cláusula' for') no funcionará como se esperaba. – Dirk
@coshman, la cantidad de hijos anidados será variable. – Matrym