<div id="parent">
<div id="child1">
<div id="child11"></div>
</div>
<div id="child2"></div>
</div>
var parent = document.getElementById("parent");
获得了父元素parent的情况下怎么根据父元素parent获取其下面的子节点,如获取child1,child11,不要直接用getElementById,求大神解答
------解决方案--------------------
遍历childNodes
<div id="parent">
<div id="child1">
<div id="child11"></div>
</div>
<div id="child2"></div>
</div>
<script type="text/javascript">
function getChildNode(childNodes, index) {
var node = -1;
for (var i = 0, j = childNodes.length; i < j; i++)
if (childNodes[i].nodeType == 1) {
node++;
if (node == index) return childNodes[i];
}
return false;
}
window.onload = function () {
var parent = document.getElementById("parent");
var child1 = getChildNode(parent.childNodes, 0);
alert(child1.id)
var child11 = getChildNode(child1.childNodes, 0);
alert(child11.id)
}
</script>
------解决方案--------------------
DOM遍历有一系列接口的。
previousSibling //前一个节点
nextSibling //下一个节点
firstChild //第一个孩子
lastChild //最后一个孩子
childNodes //所有的孩子节点,nodeList类型的
以上是XML DOM标准接口,在其他语言的DOM实现中都是统一的。
但是以上接口有一个缺点,那就是文本节点也算节点。html为了格式美观,通常会保留换行和缩进。
于是,现代浏览器又提供了一系列类似的接口,用来只关心Element节点。
previousElementSibling
nextElementSibling
firstElementChild
lastElementChild
children
以上接口需现代浏览器才支持。