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

yizhihongxing

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

初学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中的事件对象 在客户端JS中,事件对象是非常重要的概念之一,它提供了关于事件被触发的所有信息。了解并使用事件对象可以让我们写出更加优秀的JS代码,并更好的理解浏览器的事件模型。 何为事件对象 事件对象是指在JavaScript中当一个事件被触发时,浏览器会自动创建一个事件对象。事件对象中包含着与所触发事件相关的所有信息,如事件发生的位置、事件…

    JavaScript 2023年5月27日
    00
  • 关于JavaScript中URL对象的一些妙用

    关于JavaScript中URL对象的一些妙用,我来为大家详细讲解一下。 什么是URL对象 URL对象是JavaScript中的一个内置对象,它表示一个统一资源定位符,即URL。它可以帮助我们解析并操作URL。 在JavaScript中,我们可以通过创建一个URL实例来创建一个URL对象。其语法如下: let urlObject = new URL(urlS…

    JavaScript 2023年6月11日
    00
  • 基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作

    让我为您详细讲解“基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作”的完整攻略。 Mutation Observer 介绍 Mutation Observer 是 HTML5 新增的一种 DOM 监听方法,可以用来监听 DOM 树的变化。它可以监听某个 DOM 节点及其所有子节点树上的任何 DOM 改变,并可以配置响应相应的变…

    JavaScript 2023年6月11日
    00
  • js charAt的使用示例

    是的,我可以为你提供有关使用JavaScript中的charAt()方法的攻略。下面是完整的攻略,其中包含了两个实例: charAt() 方法的介绍 charAt() 是 JavaScript 字符串中的一种方法,它用于返回字符串中指定位置的字符。它也常用来检查字符串中是否包含想要的字符。该方法的语法如下: string.charAt(index) 其中,s…

    JavaScript 2023年5月19日
    00
  • js实现类似于add(1)(2)(3)调用方式的方法

    要实现类似于 add(1)(2)(3) 这样的调用方式,我们可以使用 JavaScript 的闭包机制实现。以下是具体的实现步骤: 首先定义一个函数 add,它返回另一个函数; 返回的这个函数中,我们定义一个变量 sum,来保存函数所有调用参数的总和。并返回一个新的函数,用于下一次的调用; 新的函数中,使用闭包的方式,把前面的参数和当前的参数相加,然后返回一…

    JavaScript 2023年5月27日
    00
  • 在vs2010中调试javascript代码方法

    在VS2010中调试JavaScript代码,需要注意以下几个步骤: 1. 确认浏览器设置 在VS2010中调试JavaScript代码,需要使用Internet Explorer浏览器。因此,需要先确认IE浏览器的设置是否正确。 打开IE浏览器,选择菜单栏-工具-Internet选项。 在Internet选项窗口中,点击“高级”选项卡。 确认“禁用脚本调试…

    JavaScript 2023年6月11日
    00
  • 比较简单的一个符合web标准的JS调用flash方法

    实现将JS调用Flash的方法,通常使用的是Flash提供的ExternalInterface类,以下是实现方法: 1. 在Flash中定义需要调用的方法 首先在Flash ActionScript代码中定义需要被调用的方法,可以在你的Flash项目中新建一个Symbol(如code),在新建的Symbol中将需要的函数注册到ExternalInterfac…

    JavaScript 2023年6月11日
    00
  • js构造函数、索引数组和属性的实现方式和使用

    下面详细讲解 “js构造函数、索引数组和属性的实现方式和使用” 的完整攻略: 构造函数的实现方式和使用 构造函数是一种特殊的函数,可以用来创建 JavaScript 对象。构造函数通过 new 关键字来调用,从而创建一个新的对象。构造函数的名称通常以大写字母开头,以区分普通函数。下面是构造函数的基本语法: function Person(name, age)…

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