我有以下代码:
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) {
但是如果我这样做,我不清楚如何引用当前子元素?我将不再有索引i来确定子元素的位置。有什么建议吗?
谢谢!
更新:
根据答案建议,我现在使用以下内容。这是正确/最有效的方法吗?
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]);
};
m
这个名称:m.parentNode.removeChild(m)
。然而,可能会出现问题,因为在for
循环中删除一个节点然后获取它的nextSibling
将无法按预期工作。 - Dirk