我想扫描所有childNodes的div,包括那些位于其他元素中的childNodes。现在我有这个:
var t = document.getElementById('DivId').childNodes;
for(i=0; i<t.length; i++) alert(t[i].id);
但它只能得到分区的孩子而不是孙子孙女。谢谢!
编辑:这个问题太模糊了。对于那个很抱歉。这是一个小提琴:
body.onload脚本不能在JSFiddle上运行,但它可以工作,除了“Me Second”和“Me Third”输入字段没有被分配tabIndex,因此被跳过。
答案 0 :(得分:66)
这是最快速,最简单的方式,适用于所有浏览器:
myDiv.getElementsByTagName("*")
答案 1 :(得分:17)
如果您在现代浏览器上查找所有HTMLElement
,可以使用:
myDiv.querySelectorAll("*")
答案 2 :(得分:10)
曾孙子呢?
要任意深入,你可以使用递归函数。
var alldescendants = [];
var t = document.getElementById('DivId').childNodes;
for(i = 0; i < t.length; i++)
if (t[i].nodeType == 1)
recurseAndAdd(t[i], alldescendants);
function recurseAndAdd(el, descendants) {
descendants.push(el.id);
var children = el.childNodes;
for(i=0; i < children.length; i++) {
if (children[i].nodeType == 1) {
recurseAndAdd(children[i]);
}
}
}
如果你真的只想要孙子,那么你可以取出递归(并可能重命名函数)
function recurseAndAdd(el, descendants) {
descendants.push(el.id);
var children = el.childNodes;
for(i=0; i < children.length; i++) {
if (children[i].nodeType == 1) {
descendants.push(children[i].id);
}
}
}