我想扫描所有childNodes的div,包括那些位于其他元素中的childNodes.现在我有这个:
var t = document.getElementById('DivId').childNodes;
for(i=0; i<t.length; i++) alert(t[i].id);
Run Code Online (Sandbox Code Playgroud)
但它只能得到分区的孩子而不是孙子孙女.谢谢!
编辑:这个问题太模糊了.对于那个很抱歉.这是一个小提琴:
body.onload脚本不在JSFiddle上运行,但它可以工作,除了"Me Second"和"Me Third"输入字段没有被分配tabIndex,因此被跳过.
rvi*_*hne 74
这是最快速,最简单的方法,适用于所有浏览器:
myDiv.getElementsByTagName("*")
Run Code Online (Sandbox Code Playgroud)
Mad*_*het 21
如果您正在寻找所有HTMLElement
现代浏览器,您可以使用:
myDiv.querySelectorAll("*")
Run Code Online (Sandbox Code Playgroud)
曾孙子们怎么样?
要任意深入,您可以使用递归函数.
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]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你真的只想要孙子,那么你可以拿出递归(并可能重命名函数)
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47615 次 |
最近记录: |