获得所有元素的孩子?

时间:2011-08-15 07:15:10

标签: javascript

有没有办法归还所有元素“后代”,包括其孩子的孩子?

我确信有一种简单的方法,但我能想到的只是递归.children

3 个答案:

答案 0 :(得分:5)

您可以使用getElementsByTagName并传递“*”作为参数,例如:

var oDiv = document.getElementById("MyDiv");
var allChildrenDeep = oDiv.getElementsByTagName("*");

请注意,对于包含许多子元素的顶级元素,它可以覆盖该数组中的数百个项目,因此请密切关注效率。

答案 1 :(得分:4)

element.getElementsByTagName('*');

将返回树中比element更靠下的所有元素的实时列表。用法示例:

function getSubtreeBelowElementById(id){
    return document.getElementById(id).getElementsByTagName('*');
}

请注意,这只会返回HTML节点,它会跳过Comment节点和Text节点。

答案 2 :(得分:1)

如果您的目标是模糊的新浏览器,那么您可以使用querySelectorAll

var c = document.getElementById('myElement');
var offspring = c.querySelectorAll('*');

编辑:不要使用此方法。浏览器支持不像getElementsByTagName那样普遍存在,并且没有进行优化。快速基准测试表明它的速度要慢5倍。