2

我了解对于存储在名为“父”的变量中的网页节点,我可以使用以下命令获取其所有子节点

var children=parent.childNodes;

我这里有两个问题——

(a) 上述代码行是否只提供直接子节点?或者甚至低于直接子级的节点也会存储在“子级”变量中?

(b) 如何解析“children”变量中的每个节点?

4

3 回答 3

1

1)它只会返回直接子节点,但它们又将包含它的所有子节点......等等。

2)

for(var i=0;i<children.length;i++)
{
    children[i].......
}
于 2012-07-31T15:51:18.120 回答
1

a)它只会返回直接的孩子(但是,当然每个孩子都可能包含孩子)

b)

var children = parent.childNodes;

for(var i = 0; i < children.length; i++) 
{
    var singleChild = children[i]
}
于 2012-07-31T15:53:31.343 回答
0

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 ));
于 2012-07-31T15:52:20.783 回答