初学js插入节点appendChild insertBefore使用方法

请你耐心看完以下的攻略:

初学js插入节点appendChild insertBefore使用方法

在 web 开发中,操作 DOM (文档对象模型)是必不可少的功能。DOM 提供了操作 HTML、XML 文档的接口,使得我们可以通过 JS 在 HTML 页面中进行各种动态操作,例如添加、删除、移动节点等。其中添加节点是常见的操作之一,本文将讲解常用的添加节点方法 appendChildinsertBefore

appendChild() 方法

appendChild() 方法用于在节点的最后添加一个新的子节点。具体语法如下:

parentNode.appendChild(newNode);

其中 parentNode 是要添加子节点的节点对象,newNode 是要添加的子节点对象。以下示例将在一个 <ul> 列表的最后添加一条新的 <li> 项:

<ul id="list">
  <li>第一项</li>
  <li>第二项</li>
  <li>第三项</li>
</ul>
var list = document.querySelector("#list");  // 获取 <ul> 节点对象
var newItem = document.createElement("li");   // 创建新的 <li> 节点对象
newItem.textContent = "第四项";               // 设置新节点的文本内容
list.appendChild(newItem);                    // 将新节点添加到 <ul> 节点的最后

以上代码创建了一个新的 <li> 节点对象 newItem,并将其添加到了 <ul> 列表的最后,此时页面的 HTML 代码变为:

<ul id="list">
  <li>第一项</li>
  <li>第二项</li>
  <li>第三项</li>
  <li>第四项</li>
</ul>

insertBefore() 方法

insertBefore() 方法用于在节点的指定位置添加一个新的子节点。具体语法如下:

parentNode.insertBefore(newNode, referenceNode);

其中 parentNode 是要添加子节点的节点对象,newNode 是要添加的子节点对象,referenceNode 是要插入在其前面的参考节点对象。以下示例将在一个 <ul> 列表的第二项前面添加一条新的 <li> 项:

<ul id="list">
  <li>第一项</li>
  <li>第二项</li>
  <li>第三项</li>
</ul>
var list = document.querySelector("#list");  // 获取 <ul> 节点对象
var newItem = document.createElement("li");   // 创建新的 <li> 节点对象
newItem.textContent = "新的第二项";            // 设置新节点的文本内容
var refNode = list.children[1];               // 获取 <ul> 列表的第二项节点
list.insertBefore(newItem, refNode);           // 将新节点插入到第二项之前

以上代码创建了一个新的 <li> 节点对象 newItem,并将其插入到了 <ul> 列表的第二项之前,此时页面的 HTML 代码变为:

<ul id="list">
  <li>第一项</li>
  <li>新的第二项</li>
  <li>第二项</li>
  <li>第三项</li>
</ul>

示例讲解

以上是 appendChildinsertBefore 方法的基本使用方法和语法,下面用两个例子来进一步讲解。

示例1:表格行添加

下面有一个包含表格的 HTML 代码:

<table id="myTable">
  <thead>
    <tr>
      <th>姓名</th>
      <th>性别</th>
      <th>年龄</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>男</td>
      <td>20</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>女</td>
      <td>22</td>
    </tr>
    <tr>
      <td>王二</td>
      <td>男</td>
      <td>25</td>
    </tr>
  </tbody>
</table>

现在要在表格的第二行和第四行之间添加一行,包含姓名为“赵五”、性别为“女”、年龄为“23”的信息。使用 insertBefore 方法来实现:

var table = document.querySelector("#myTable"); // 获取 <table> 节点对象
var newRow = table.insertRow(3);                 // 在第四行的位置创建新行
var nameCell = newRow.insertCell(0);             // 创建新单元格,并设置单元格的内容
nameCell.textContent = "赵五";
var genderCell = newRow.insertCell(1);           // 创建新单元格,并设置单元格的内容
genderCell.textContent = "女";
var ageCell = newRow.insertCell(2);              // 创建新单元格,并设置单元格的内容
ageCell.textContent = 23;

上述代码用到了 table.insertRow()insertCell() 方法来创建行和单元格。其中 table.insertRow(index) 方法可以在表格中的指定位置创建一个新的行,并返回对该行的引用;newRow.insertCell(index) 方法用于在指定行的指定位置创建一个新的单元格,并返回对该单元格的引用。

示例2:深度优先遍历

下面有一个 HTML 示例:

<div class="parent" id="level-1">
  <ul>
    <li>item-1</li>
    <li>item-2</li>
    <li>item-3
      <ul>
        <li>subitem-1</li>
        <li>subitem-2</li>
      </ul>
    </li>
    <li>item-4</li>
  </ul>
  <div class="child" id="level-2">
    <p>段落1</p>
    <p>段落2</p>
  </div>
</div>

上面的 HTML 片段表示了一个简单的 DOM 树,其中包含两个层级的节点。现在要用深度优先遍历的方式遍历整棵树,输出节点的名称和 ID。代码如下:

// 递归函数
function dfs(node) {
  console.log(node.nodeName, node.id);  // 输出节点的名称和 ID
  if (node.hasChildNodes()) {           // 若当前节点有子节点,则递归遍历其子节点
    var childNodes = node.childNodes;
    for (var i = 0; i < childNodes.length; i++) {
      if (childNodes[i].nodeType === Node.ELEMENT_NODE) {  //排除文本节点
        dfs(childNodes[i]);
      }
    }
  }
}

// 调用函数,从根节点开始遍历
var root = document.documentElement;
dfs(root);

上述代码定义了一个 dfs 函数,用于深度优先遍历整棵树,并输出节点的名称和 ID。在函数中,若当前节点有子节点,则递归地遍历其子节点。使用到的方法有 node.nodeName (返回节点的名称)、node.nodeType (返回节点的类型,1 表示元素节点,3 表示文本节点)和 node.hasChildNodes() (判断节点是否含有子节点)。

以上就是关于 appendChildinsertBefore 方法的完整攻略,希望对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:初学js插入节点appendChild insertBefore使用方法 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 纯JS实现简单的日历

    接下来我将详细讲解如何使用纯JS实现简单的日历。 步骤一:搭建基本框架 在HTML文件中创建一个容器,用于显示日历,并将其与CSS文件链接起来: <div id="calendar"></div> <link rel="stylesheet" href="calendar.css…

    JavaScript 2023年5月27日
    00
  • JS实现的数组去除重复数据算法小结

    JS实现的数组去除重复数据算法小结 1. 利用Set去重 使用Set集合可以简便地去除数组中的重复元素,具体步骤如下: 定义一个Set集合 使用Array.from()方法将数组转换为一个新的Set集合 下一步,我们需要将Set集合转换为数组,使用Array.from()方法即可 示例代码: function unique(arr) { return Arr…

    JavaScript 2023年5月28日
    00
  • javascript中href和replace的比较(详解)

    JavaScript中href和replace的比较(详解) 在JavaScript中,href和replace方法都可以用来改变当前页面的URL地址,但它们有着不同的用法和效果。本文将详细介绍这两种方法的差异并提供相关示例,以帮助读者更好地理解。 href方法 使用href方法可以通过在当前窗口中打开新的URL地址。该操作会导致当前页面的所有状态丢失,包括…

    JavaScript 2023年6月11日
    00
  • 分享一则javascript 调试技巧

    当我们进行JavaScript开发时,难免会遇到各种错误和调试问题。为了能够高效地解决问题,这里分享一些实用的调试技巧。 1. 使用console.log()输出调试信息 console.log()是我们常用的调试工具之一,它可以在控制台输出任何类型的数据,方便我们观察和分析。在开发中,可以将一些关键数据打印出来,这样可以直观地发现数据的变化和问题所在,例如…

    JavaScript 2023年5月18日
    00
  • js实现简单的倒计时

    下面是关于“JS实现简单的倒计时”的详细攻略。 基本思路 倒计时的原理很简单,就是获取未来的某个时间点与当前时间点的差值,然后根据差值计算出剩余的时间,最后通过 DOM 操作将剩余的时间显示在网页上。 实现步骤 1. 获取未来时间点 倒计时的第一步就是要获取未来的某个时间点,可以在 HTML 中用一个 input 标签来输入一个日期时间字符串,然后使用 ne…

    JavaScript 2023年5月27日
    00
  • JS实现的在线调色板实例(附demo源码下载)

    JS实现的在线调色板实例 本篇文章将向您展示如何使用JavaScript创建一个在线调色板实例。本项目使用HTML、CSS和JS,允许用户通过单击颜色选取器调整颜色,然后显示所选颜色的值。 项目代码 请先下载示例代码,然后跟随我们的指导进行实现:在线调色板实例源代码 实现过程 从Github仓库中下载示例代码。 用您最喜欢的编辑器打开index.html文件…

    JavaScript 2023年6月10日
    00
  • 微信小程序返回上一页的各种方法实例

    微信小程序返回上一页的各种方法实例 在微信小程序中,返回上一页是开发过程中经常会涉及到的一个需求。本文将详细讲解微信小程序中返回上一页的各种方法,并提供两个示例说明。 方法一:调用微信提供的API 微信小程序提供了一个 wx.navigateBack() 方法用于返回上一页,该方法可接受一个参数,表示返回的层数,默认值为1,即返回上一页。 示例代码如下: w…

    JavaScript 2023年6月11日
    00
  • JavaScript中数组去重的5种方法

    “JavaScript中数组去重的5种方法”是一个常见的问题,本文将详细讲解五种不同的去重方法。 方法一:使用ES6的Set ES6中新增的Set是一种数据结构,可以用于存储任何类型的唯一值。我们可以使用Set去重一个数组,然后再将其转换为数组类型。 let arr = [1, 2, 2, 3, 3, 4, 5]; let uniqueArr = Array…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部