操作DOM节点相关

182 阅读3分钟

body代码

    <div class="box">
        <p>我是通过 HTML 手写出来的 P 标签</p>
</div>

操作 DOM 节点,常规意义上 '增删改查'

在向页面增加一个节点, 首先, 你应该先 有一个节点

操作分类:

  1. 在 JS 中创建一个节点

语法:

    document.createElement('要创建的标签名')

2. 向页面增加一个节点 语法1:

    元素.appendChild(要添加的节点)

作用: 向元素的末尾追加一个节点 语法2:

    元素.insertBefore(要插入的节点, 插入到那个节点的前面)

注意: 两个参数都是必填项

第二个参数传递正常节点时, 代表插入到这个节点的前面

第二个参数传递的是 null 时, 表示插入到 "元素" 的末尾

0. 获取元素

    var myDiv = document.getElementsByClassName('box')[0]
    var oP = document.querySelector('p')

1.1 创建一个元素节点

    var oDiv = document.createElement('div')
    var oSpan = document.createElement('span')

1.2 创建一个文本节点 (了解)

    var oText = document.createTextNode('我是通过 JS 创建出来的文本节点')

1.3 将刚才创建的文本节点, 添加到元素节点内 元素.appendChild(要添加的节点)

    oDiv.appendChild(oText)
    oSpan.innerText = '我是通过 innerText 直接赋值的字符串'

2. 向页面中增加一个节点

2.1 元素.appendChild(要添加的节点)

    myDiv.appendChild(oDiv)
    myDiv.appendChild(oSpan)

2.2 元素.insertBefore(要插入的节点, 插入到那个节点的前面)

    myDiv.insertBefore(oDiv, oP)    // 将我们通过 JS 创建的 div 标签, 插入到页面的 P 标签前边
    myDiv.insertBefore(oSpan, null) // 第二个参数传递 null 代表插入到 '元素' 的末尾

body代码

<div class="box">
    <p>我是第一个 P 标签</p>
    <p>我是第二个 P 标签</p>
</div>

0. 获取节点

    var box = document.querySelector('.box')
    var oP = document.querySelector('p')    // 满足条件的第一个 p 标签

3. 删除页面某一个节点

语法1:

    父节点.removeChild('要删除的子节点')

语法2:

    节点.remove()
    

代码

    box.removeChild(oP)
    box.remove()

4. 修改页面的某一个节点

语法:

    父节点.replaceChild('新节点', '旧节点/要被修改的节点')

作用: 将页面中的某一个节点 做一个替换

    var oSpan = document.createElement('span')  // 创建一个 span 标签
    oSpan.innerText = '我是通过 JS 创建出来的 SPAN 标签'    // 给 span 标签添加文字
    box.replaceChild(oSpan, oP) // 用刚刚创建出来的 span 标签, 替换 原本的 p 标签

5. 获取页面的某一个节点

之前获取元素的方法

6. 克隆一个节点 (把一个节点复制出一个一摸一样的)

语法:

    节点.cloneNode(参数)
    

参数: 默认是 false, 表示不克隆后代节点

选填是 true, 表示克隆后代节点

    var cloneP = oP.cloneNode() // 克隆出来一个和 oP 这个节点 一摸一样的 新节点      不包含后代节点
    var cloneP = oP.cloneNode(true) // 克隆出来一个和 oP 这个节点 一摸一样的 新节点     包含后代节点
    box.appendChild(cloneP)

延申扩展

box.appendChild(oP)

错误理解: 将 oP 这个节点, 添加到 box 的末尾, 然后页面就有 3 个 P标签了

正确理解: 将 oP 这个节点, 添加到 box 的末尾

因为 DOM 节点在页面中只会具有一个(核心)

所以这一步相当于将 原本排列在 box 内部第一个的 p 标签, 移动到了 box 内部的 最后一个