我有以下幾點:如何讓這個循環所有的孩子遞歸?
for (var i = 0; i < children.length; i++){
if(hasClass(children[i], "lbExclude")){
children[i].parentNode.removeChild(children[i]);
}
};
我會把它想遍歷所有孩子的孩子,等等(不只是頂級)。我發現這條線,這似乎做到這一點:
for(var m = n.firstChild; m != null; m = m.nextSibling) {
但我對我如何引用當前子還不清楚,如果我作出這樣的開關?我不再需要澄清孩子的指標位置。有什麼建議麼?
謝謝!
更新:
根據回答建議,我正在使用以下內容。這是否是正確/最有效的方式?
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]);
};
你知道有多少個數組嵌套在這裏嗎? – thecoshman 2010-04-26 08:56:51
簡單地用'm'命名:'m.parentNode.removeChild(m)'。不過,可能有一個問題,因爲刪除一個節點,然後將它的'nextSibling'(在'for'子句中)將無法按預期工作。 – Dirk 2010-04-26 08:58:37
@coshman,嵌套的孩子的數量將是可變的。 – Matrym 2010-04-26 09:03:19