<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,求大神解答

解决方案 »

  1.   

    遍历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>
      

  2.   

    DOM遍历有一系列接口的。previousSibling //前一个节点
    nextSibling  //下一个节点
    firstChild  //第一个孩子
    lastChild   //最后一个孩子
    childNodes  //所有的孩子节点,nodeList类型的以上是XML DOM标准接口,在其他语言的DOM实现中都是统一的。但是以上接口有一个缺点,那就是文本节点也算节点。html为了格式美观,通常会保留换行和缩进。
    于是,现代浏览器又提供了一系列类似的接口,用来只关心Element节点。previousElementSibling
    nextElementSibling
    firstElementChild
    lastElementChild
    children以上接口需现代浏览器才支持。