• 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

  • 相关阅读:
    PHP的反射机制
    mysqlbinlog
    PHP调用java的class
    ecshop session机制
    memory_limit session.cache_expire ecshop初始化注释说明
    ecshop运行超过30秒超时的限制解决办法
    如果你想拥有事业,而非仅仅是工作
    扎克伯格谈”人际交往”趋势
    Magento架构分析,Magento MVC 设计分析
    推荐的PHP编码规范
  • 原文地址:https://www.cnblogs.com/layaling/p/8583613.html
Copyright © 2020-2023  润新知