zoukankan      html  css  js  c++  java
  • javascript DOM操作 节点的遍历

    一、通过javascript的遍历可以由一个节点来查找它的子节点(childNodes)、兄弟节点(nextSibling/previousSibling)和父节点(parentNode)。

    代码说明:

    <ul id="myul">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>

    1、获取ul的所有子节点——childNodes

    <script>
            var ul=document.getElementById('myul');
            for(var i=0;i<ul.childNodes.length;i++){
                console.log(ul.childNodes[i]);
            }
        </script>

    2、因为通过1获取了ul的所有的子节点,所以就可以直接通过childNodes来直接访问它里面的子节点

        提醒:1、childNodes最后获得的是一个数组对象childNodes[i]    2、这里所获得的素有子节点也包括空白节点,看截图

    所以,

    访问第一个li: ul.childNodes[1]或者ul.childNodes.item(1)

           第二个li: ul.childNodes[3]或者ul.childNodes.item(3)

           第三个li: ul.childNodes[5]或者ul.childNodes.item(5)

           第四个li: ul.childNodes[7]或者ul.childNodes.item(7)

          

    3、访问到了第一个li,就可以通过第一个li节点来访问后面一个或者前面一个,那就是nextSibling/previousSibling

        所以:

        第二个li:ul.childNodes[1].nextSibling.nextSibling(不要忘了之间的空白节点);

        第一个li:   ul.childNodes[3].previousSibling.previousSibling

    4、当然我们也可以直接通过firstChild和lastChild来访问ul的第一个节点和第二个节点

    5、访问到子节点,直接parentNode找到父节点

    二、解决空白节点的问题

       1、在js里面添加一个判断

    <script>
            var ul=document.getElementById('myul');
            for(var i=0;i<ul.childNodes.length;i++){
                   if(ul.childNodes[i].nodeType==1){
                    console.log(ul.childNodes[i]);
                }
            } 
    </script>

    这样控制台打印出的结果就是4个li子元素

    2、还是上面的例子

         获得所有li:  ul.children获得一个数组

        第一个li:ul.children[0]或者ul.children.item(0)或者ul.firstElementChild;

        兄弟li:nextElementSibling/previousElementSibling

        最后一个li:lastElementChild

  • 相关阅读:
    GJM :动作手游实时PVP 帧同步(客户端)[转载]
    GJM :多人在线游戏的设计思路
    GJM : 中断被Socket.Accept阻塞的线程
    GJM :异步Socket [转载]
    GJM :C#开发 异步处理是目的,多线程是手段
    GJM : FlatBuffers 与 protobuf 性能比较 [转载 ]
    GJM : Protobuf -NET 相比Json 传输速度只需要1/3 解析只需要1/10
    GJM : Unity3D结合ZXING制作二维码识别
    GJM : Unity3D 常用网络框架与实战解析 【笔记】
    javascripct数组
  • 原文地址:https://www.cnblogs.com/layaling/p/8583613.html
Copyright © 2011-2022 走看看