我了解对于存储在名为“父”的变量中的网页节点,我可以使用以下命令获取其所有子节点
var children=parent.childNodes;
我这里有两个问题——
(a) 上述代码行是否只提供直接子节点?或者甚至低于直接子级的节点也会存储在“子级”变量中?
(b) 如何解析“children”变量中的每个节点?
我了解对于存储在名为“父”的变量中的网页节点,我可以使用以下命令获取其所有子节点
var children=parent.childNodes;
我这里有两个问题——
(a) 上述代码行是否只提供直接子节点?或者甚至低于直接子级的节点也会存储在“子级”变量中?
(b) 如何解析“children”变量中的每个节点?
1)它只会返回直接子节点,但它们又将包含它的所有子节点......等等。
2)
for(var i=0;i<children.length;i++)
{
children[i].......
}
a)它只会返回直接的孩子(但是,当然每个孩子都可能包含孩子)
b)
var children = parent.childNodes;
for(var i = 0; i < children.length; i++)
{
var singleChild = children[i]
}
a) 是的,只列出直接子节点
b) 例如使用 ES5 魔法
[].forEach.call(children, function( node ) {
console.log( node );
});
所以我们可以有一个递归调用,循环所有子节点:
(function _loop( current ) {
[].forEach.call( current.children, function( node ) {
if( node.children.length ) {
_loop( node );
}
else {
console.log( node );
}
});
}( children ));