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

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

                                                                                  未完待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容