美文网首页
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

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

  • JavaScript--模型、闭包、链

    (1)事件模型JavaScript中有两种时间模型:DOM0,DOM2 DOM0级事件模型是早期的事件模型,所有的...

  • DOM事件模型

    DOM事件模型 1.历史 2.DOM level2 标准 DOM level3没有对事件进行修订,所以DOM事件模...

  • 一些问题

    DOM 1.什么是DOM? Document Object Model,文档对象模型 2.DOM操作 JavaSc...

  • 🙃🙃🙃🙃

    javascript的组成 1.ECMAScript 2.Dom 文档对象模型(Dom,Document Obj...

  • js基本

    #### javascript的组成 ```js 1.ECMAScript 2.Dom 文档对象模型(Dom,D...

  • 07.JavaScript Html Dom

    DOM简介 DOM :Document Object Model 文档对象模型HTML DOM树 : DOM树模型...

  • dom操作初探

    什么是DOM 1.DOM-->Document Object Model 文本对象模型2.DOM定义了表示和修改...

  • JavaScript中的DOM

    1.什么是DOM?  1.DOM全称:Document Object Model ,文档对象模型。 2.DOM为我...

  • DOM事件模型

    DOM标准文档 1. **目前的DOM事件模型标准是Document Object Model Level 2. ...

网友评论

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

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