美文网首页
07-18 DOM模型的新手入门2

07-18 DOM模型的新手入门2

作者: 埋没猿 | 来源:发表于2018-07-19 14:34 被阅读0次

    -- appendChild --    用来插入节点;

    <body>
        <div id="div4">1<div>2</div><div>3</div></div>
    </body>
    <script>
        //  var div4 = document.getElementById('div4')
        //  var p = document.createElement('p')
        //  div4.appendChild(p)
    </script>
    
    节点添加前的样式.PNG
    <body>
        <div id="div4">1<div>2</div><div>3</div></div>
    </body>
    <script>
        var div4 = document.getElementById('div4')
        var p = document.createElement('p')
        div4.appendChild(p)
    </script>
    
    节点添加后的样式.PNG

    -- hasChildNodes --    用来判断一个字节是否有子节点;

             该方法返回一个布尔值,表示当前节点是否有子节点.
    <body>
        <div class="div1">
            <p class="p1"></p>
        </div>
    </body>
    <script>
        var div1 = document.getElementsByClassName('div1')[0]
        console.log(div1.hasChildNodes())    //  true
    </script>
    

    -- cloneNode --    用来克隆一个节点

             1.该方法可以传入一个布尔值true,表示复制指定元素的子节点,也会复制该节点的全部子节点,如果不想复制子节点,就改变布尔值为false.
             2.复制的元素不包括添加在元素上的事件.

    我们先来看下复制前的样式

    复制前的样式.PNG
    下面是复制前的代码:
    <body>
        <!--div1-->
        <div class="div1">
            <p class="p1"></p>
        </div>
        <!--div2-->
        <div class='div2'></div>
    </body>
    <script>
    
    </script>
    

    接下来开始将div1复制到div2中:

    <body>
        <div class="div1">
            <p class="p1"></p>
        </div>
        <div class='div2'></div>
    </body>
    <script>
        var div1 = document.getElementsByClassName('div1')[0]
        var div2 = document.getElementsByClassName('div2')[0]
        var newDiv = div1.cloneNode(false)
        div2.appendChild(newDiv)
    </script>
    

    此为布尔值是false的,div1中的P标签并没有被复制:

    此为布尔值是false.PNG

    下面为将false改为true后的样式:

    true值.PNG

    -- insertBefore --    用来将一个节点插入到指定位置;

             insertBefore要传两个值,第一个值为要添加的节点,第二个值为将新节点插到此节点的前面,第二个值可以填null,意思为将添加的节点插到当前元素的最后.
    <body>
        <div class="div1">
            <p class="p1"></p>
        </div>
    </body>
    <script>
    </script>
    

    下面图片为添加前的样式:

    添加前样式.PNG

    下面我们开始添加代码了,此代码为在前面添加:

    <body>
        <div class="div1">
            <p class="p1"></p>
        </div>
    </body>
    <script>
        var div1 = document.getElementsByClassName('div1')[0]
        var p1   = document.getElementsByClassName('p1')[0]
        var span1 = document.createElement('span')
        div1.insertBefore(span1,p1)
    </script>
    
    添加后样式1.PNG

    此代码为在最后添加:

    <body>
        <div class="div1">
            <p class="p1"></p>
        </div>
    </body>
    <script>
        var div1 = document.getElementsByClassName('div1')[0]
        var span1 = document.createElement('span')
        div1.insertBefore(span1,null)
    </script>
    
    添加后样式2.PNG

    -- removeChild --    表示从元素中移除该子节点:

             我们就用上图"添加后样式2"为例:
    <body>
        <div class="div1">
            <p class="p1"></p>
        </div>
    </body>
    <script>
        var div1 = document.getElementsByClassName('div1')[0]
        var p1   = document.getElementsByClassName('p1')[0]
        div1.insertBefore(span1,null)
        div1.removeChild(p1)
    </script>
    

    可以看到div1中的P标签已经移除了;

    捕移除子节点.PNG

    -- replaceChild --    表示替换当前节点的某一个子节点:

             还是以"添加后样式2"为例:
    <body>
        <div class="div1">
            <p class="p1"></p>
        </div>
    </body>
    <script>
        var div1 = document.getElementsByClassName('div1')[0]
        var p1   = document.getElementsByClassName('p1')[0]
        var span1 = document.createElement('span')
        var span2 = document.createElement('span')
        div1.insertBefore(span1,null)
        div1.replaceChild(span2,p1)
    </script>
    

    我们可以看到,P标签被替换成了span标签;

    替换节点.PNG

    -- children --    返回当前节点的所有元素子节点;

             返回的是一组nodelist数据.
    <body>
        <div class="div1">
            <p class="p1"></p>
            <p class="p1"></p>
            <p class="p1"></p>
            <p class="p1"></p>
        </div>
    </body>
    <script>
        var div1 = document.getElementsByClassName('div1')[0]
        for(var i = 0;i<div1.children.length;i++){
            console.log(div1.children[i])
        }
    </script>
    
    可以看到,四个P标签全部显示出来了;
    for循环.PNG

    -- append --    向当前元素里面的最后添加一个或多个子节点

    -- prepend --    向当前元素里面的最前添加一个或多个子节点

    <body>
        <div class="div1">
            <p class="p1"></p>
        </div>
    </body>
    <script>
        var div1 = document.getElementsByClassName('div1')[0]
        var p1 = document.getElementsByClassName('p1')[0]
        var span2 = document.createElement('span')
        var div2 = document.createElement('div')
        div1.prepend(span2)
        div1.append(div2)
    </script>
    

    span2和div2都添加到"div1"中了;

             添加多个子节点时,括号内用逗号分开即可: (span,div,img)
    前后各添加子节点.PNG

    -- before --    向当前节点前面添加一个或多个节点;

    -- after --    向当前节点后面添加一个或多个节点;

             可以将标签节点和文本节点混合添加的,且添加的顺序和你写的代码样式有关;
    <body>
        <div class="div1">
            <p class="p1"></p>
        </div>
    </body>
    <script>
        var div1 = document.getElementsByClassName('div1')[0]
        var span1 = document.createElement('span')
        var div2 = document.createElement('div')
        div1.before(span1,"h1")
    
        div1.after(div2,"h2")
    
        div1.before("h3")
    </script>
    

    可以看到,子节点的添加方式和你写的代码样式是一样的;

    前后各添加子节点(当前节点).PNG

    -- replaceWith --    将当前节点替换为其他节点;

    <body>
        <div class="div1">
            <p class="p1"></p>
        </div>
    </body>
    <script>
        var div1 = document.getElementsByClassName('div1')[0]
        var p1   = document.getElementsByClassName('p1')[0]
        var span1 = document.createElement('span')
        p1.replaceWith(span1)
    </script>
    

    可以看到,P标签已经替换为span标签了;

    替换节点2.PNG

                                                                                      未完待续

    相关文章

      网友评论

          本文标题:07-18 DOM模型的新手入门2

          本文链接:https://www.haomeiwen.com/subject/ubkopftx.html