初学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中二维数组的声明方法

    声明一个二维数组通常使用以下两种方法: 1. 初始化数组并声明数组的行列数 使用嵌套的for循环初始化数组,示例如下: // 声明一个3行4列的数组 var matrix = []; for (var i = 0; i < 3; i++) { matrix[i] = []; for (var j = 0; j < 4; j++) { matrix…

    JavaScript 2023年5月27日
    00
  • javascript常用方法汇总

    JavaScript 常用方法汇总 本文将介绍常用的 JavaScript 方法,包括字符串方法、数组方法、数学计算方法、日期时间处理方法等,希望对您有所帮助。 字符串方法 1. substring() substring() 方法将返回一个字符串的子串。该字符串是从指定的开始下标位置开始,直到出现指定的结束下标位置的前一个字符为止。 const str =…

    JavaScript 2023年5月27日
    00
  • javascript中sort() 方法使用详解

    JavaScript中sort() 方法使用详解 什么是sort()方法 JavaScript中的sort()方法是用于对数组进行排序的方法。当我们需要对一个数组进行排序,比如按照数字大小或者字符串字母顺序,这时就可以使用sort()方法来动态的对数组进行排序。 sort()方法实际上是对原数组进行排序,因此原数组的顺序会被改变,这也就意味着我们在使用sor…

    JavaScript 2023年6月1日
    00
  • JavaScript判断表单提交时哪个radio按钮被选中的方法

    当表单中有多个radio按钮时,我们需要判断哪个radio按钮被选中,以便在提交表单时获取对应的值。这里介绍两种判断radio按钮被选中的方法。 方法一:使用JavaScript循环遍历radio按钮,判断哪个按钮被选中 假设我们的表单中有三个radio按钮,分别是id为”radio1″、”radio2″、”radio3″。可以通过以下代码判断哪个按钮被选中…

    JavaScript 2023年6月10日
    00
  • js中实现字符串和数组的相互转化详解

    JS中实现字符串和数组的相互转化详解 在JS中,字符串和数组之间相互转化是比较常见的操作。通常会通过split和join完成转化。接下来将详细介绍这两个方法的使用技巧。 split方法 split方法可以将字符串按照指定的分隔符,转化成数组。 const str = "hello,world" const arr = str.split(…

    JavaScript 2023年5月27日
    00
  • JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)

    JavaScript字符串对象的concat方法可用于连接两个或多个字符串,其语法为: str.concat(string2, string3, …, stringX) 其中,str 是原始字符串,string2、string3 等是要连接的字符串。 示例一:连接两个字符串 const str1 = ‘Hello’; const str2 = ‘worl…

    JavaScript 2023年5月28日
    00
  • VuePress使用Algolia实现全文搜索

    下面我将为你详细讲解“VuePress使用Algolia实现全文搜索”的完整攻略。 什么是VuePress? VuePress是一款基于Vue.js的静态网站生成器,它基于Markdown文件进行内容编写,具有文档编写、主题定制、SEO优化、全文搜索等功能,为个人博客或技术文档提供了一种快速搭建的方案。 什么是Algolia? Algolia是一款强大的全文…

    JavaScript 2023年6月11日
    00
  • 如何去除js中的json存在的转义字符\问题

    我们来讲解一下如何去除 JavaScript 中 JSON 存在的转义字符 ‘\’ 问题的完整攻略。 问题描述 在 JavaScript 中,JSON 对象的属性值中可能会存在转义字符,如 “\n” 表示换行、”\t” 表示水平制表符等。这会影响到我们对 JSON 数据的解析和使用,因此需要将其转义字符进行去除,将其还原成可读的字符串。 解决方案 我们可以利…

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