有没有办法归还所有元素“后代”,包括其孩子的孩子?
我确信有一种简单的方法,但我能想到的只是递归.children
答案 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倍。