Ho il seguente:Come faccio a rendere questo ciclo tutti i bambini in modo ricorsivo?
for (var i = 0; i < children.length; i++){
if(hasClass(children[i], "lbExclude")){
children[i].parentNode.removeChild(children[i]);
}
};
vorrei che per un ciclo tra i bambini di tutti i bambini, ecc (non solo il livello superiore). Ho trovato questa linea, che sembra farlo:
for(var m = n.firstChild; m != null; m = m.nextSibling) {
Ma sono poco chiare su come mi riferisco al bambino corrente se faccio che l'interruttore? Non avrei più bisogno di chiarire la posizione dell'indice del bambino. Eventuali suggerimenti?
Grazie!
Aggiornamento:
Ora sto utilizzando la seguente, in base alla risposta suggerimenti. È questo il modo corretto/più efficace per farlo?
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]);
};
Sai quanti array hai annidato qui? – thecoshman
Semplicemente con il nome 'm':' m.parentNode.removeChild (m) '. Potrebbe esserci un problema, però, perché la rimozione di un nodo e il suo successivo 'nextSibling' (nella clausola' for') non funzioneranno come previsto. – Dirk
@coshman, la quantità di bambini nidificati sarà variabile. – Matrym