web前端学习(四十二)——JavaScript DOM元素(添加、移除及替换)、DOM集合(Collection)、DOM节点列表(NodeList)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: web前端学习(四十二)——JavaScript DOM元素(添加、移除及替换)、DOM集合(Collection)、DOM节点列表(NodeList)

1.DOM元素的相关操作方法


方法

描述

getElementById()

返回带有指定 ID 的元素。

getElementsByTagName()

返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。

getElementsByClassName()

返回包含带有指定类名的所有元素的节点列表。

appendChild()

把新的子节点添加到指定节点。

removeChild()

删除子节点。

replaceChild()

替换子节点。

insertBefore()

在指定的子节点前面插入新的子节点。

createAttribute()

创建属性节点。

createElement()

创建元素节点。

createTextNode()

创建文本节点。

getAttribute()

返回指定的属性值。

setAttribute()

把指定属性设置或修改为指定的值。

1.1 创建新的 HTML 元素 (节点) - appendChild()

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>JS简单学习</title>
  </head>
  <body>
    <div id="div1">
      <p id="p1">这是一个段落。</p>
      <p id="p2">这是另外一个段落。</p>
    </div>
    <script type="text/javascript">
      //创建 <p></p> 元素
      var para=document.createElement("p");
      //为 <p></p> 元素创建一个新的文本节点
      var node=document.createTextNode("这是一个新的段落。");
      //将文本节点添加到 <p></p> 元素中
      para.appendChild(node);
      //查找已存在的元素 <div></div>
      var element=document.getElementById("div1");
      //把新创建的 <p></p> 元素添加到已存在的元素 <div></div> 中
      element.appendChild(para);
    </script>
  </body>
</html>

1.2 创建新的 HTML 元素 (节点) - insertBefore()

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <div id="div1">
      <p id="p1">这是一个段落。</p>
      <p id="p2">这是另外一个段落。</p>
    </div>
    <script type="text/javascript">
      //创建 <p></p> 元素
      var para=document.createElement("p");
      //为 <p></p> 元素创建一个新的文本节点
      var node=document.createTextNode("这是一个新的段落。");
      //将文本节点添加到 <p></p> 元素中
      para.appendChild(node);
      //查找已存在的父元素 <div></div>
      var element=document.getElementById("div1");
      //查找已存在的子元素 <p></p>
      var child=document.getElementById("p1");
      //在div模块中,将新创建的 para 元素添加到 child 元素之前
      element.insertBefore(para,child);
    </script>
  </body>
</html>

1.3 移除已存在的HTML 元素 - removeChild()

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <div id="div1">
      <p id="p1">这是一个段落。</p>
      <p id="p2">这是另外一个段落。</p>
    </div>
    <script type="text/javascript">
      var parent=document.getElementById("div1");
      var child=document.getElementById("p1");
      //从父元素 <div> 中移除 id="p1" 的子元素 <p>
      parent.removeChild(child);
    </script>
  </body>
</html>

1.4 替换 HTML 元素 - replaceChild()

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <div id="div1">
      <p id="p1">这是一个段落。</p>
      <p id="p2">这是另外一个段落。</p>
    </div>
    <script type="text/javascript">
      var para=document.createElement("p");
      var node=document.createTextNode("这是一个新的段落。");
      para.appendChild(node);
      var parent=document.getElementById("div1");
      var child=document.getElementById("p1");
      //在div模块中,将新创建的 para 元素替换掉 child 元素
      parent.replaceChild(para,child);
    </script>
  </body>
</html>

 

2.DOM集合(Collection)


getElementsByTagName()方法返回 HTMLCollection 对象。

HTMLCollection对象类似包含 HTML 元素的一个数组HTMLCollection 对象的 length 属性定义了集合中元素的数量。(常用于遍历集合中的元素)

注意:HTMLCollection 不是一个数组!

HTMLCollection看起来可能是一个数组,但其实不是。你可以像数组一样,使用索引( 0 为起始位置)来访问获取元素。

HTMLCollection无法使用数组的方法: valueOf(), pop(), push(), join()

2.1 实例一:通过索引访问元素、使用length属性 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <h2>JavaScript HTML DOM</h2>
    <p>Hello World!!!</p> 
    <p>Hello Redis!!!</p> 
    <p id="demo"></p>
    <script type="text/javascript">
      var myCollection=document.getElementsByTagName("p");
      document.getElementById("demo").innerHTML=
        "第二个段落的内容为: <span style='color: red;'>" + myCollection[1].innerHTML + "</span>";
      document.write("文档包含" + myCollection.length + " 个段落。");
    </script>
  </body>
</html>

2.2 实例二:通过length属性对集合进行遍历

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <h2>JavaScript HTML DOM</h2>
    <p>Hello World!!!</p> 
    <p>Hello Redis!!!</p>
    <p>点击按钮修改 p 元素的字体颜色。</p>
    <button type="button" onclick="myFunction()">点击这里</button>
    <script type="text/javascript">
      function myFunction() {
        var myCollection=document.getElementsByTagName("p");
        for(var i=0;i<myCollection.length;i++) {
          myCollection[i].style.color="red";
        }
      }
    </script>
  </body>
</html>

3.DOM节点列表(NodeList)


NodeList 对象是一个从文档中获取的节点列表 (集合) NodeList 对象类似 HTMLCollection 对象。


一些旧版本浏览器中的方法(如:getElementsByClassName())返回的是 NodeList 对象,而不是 HTMLCollection对象。


所有浏览器的childNodes属性返回的是 NodeList 对象。大部分浏览器的querySelectorAll()返回 NodeList 对象。


NodeList对象 length 属性定义了节点列表中元素的数量。

NodeList是一个文档节点的集合。


NodeList HTMLCollection有很多类似的地方。

NodeList HTMLCollection都与数组对象有点类似,可以使用索引 (0, 1, 2, 3, 4, ...) 来获取元素。


NodeList HTMLCollection都有length 属性。

HTMLCollection元素可以通过 nameid 或索引来获取。

NodeList只能通过索引来获取。只有 NodeList 对象有包含属性节点和文本节点。

节点列表不是一个数组!节点列表看起来可能是一个数组,但其实不是。你可以像数组一样,使用索引来获取元素。(以 0 为起始位置来访问)

节点列表无法使用数组的方法: valueOf(), pop(), push(), join()

3.1 实例一:通过索引访问元素、使用length属性  

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <h2>JavaScript HTML DOM</h2>
    <p>Hello World!!!</p> 
    <p>Hello Redis!!!</p> 
    <p id="demo"></p>
    <script type="text/javascript">
      var myNodelist=document.querySelectorAll("p");
      document.getElementById("demo").innerHTML=
        "第二个段落的内容为: <span style='color: red;'>" + myNodelist[1].innerHTML + "</span>";
      document.write("文档包含 " + myNodelist.length + " 个段落。");
    </script>
  </body>
</html>

3.2 实例二:通过length属性对节点列表进行遍历

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>JS简单学习</title>
  </head>
  <body>
    <h2>JavaScript HTML DOM</h2>
    <p>Hello World!!!</p> 
    <p>Hello Redis!!!</p>
    <p>点击按钮修改 p 元素的字体颜色。</p>
    <button type="button" onclick="myFunction()">点击这里</button>
    <script type="text/javascript">
      function myFunction() {
        var myNodelist=document.querySelectorAll("p");
        for(var i=0;i<myNodelist.length;i++) {
          myNodelist[i].style.color="red";
        }
      }
    </script>
  </body>
</html>

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
801 2
|
2月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
3月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
71 0
|
2月前
|
JavaScript 前端开发 Java
springboot解决js前端跨域问题,javascript跨域问题解决
本文介绍了如何在Spring Boot项目中编写Filter过滤器以处理跨域问题,并通过一个示例展示了使用JavaScript进行跨域请求的方法。首先,在Spring Boot应用中添加一个实现了`Filter`接口的类,设置响应头允许所有来源的跨域请求。接着,通过一个简单的HTML页面和jQuery发送AJAX请求到指定URL,验证跨域请求是否成功。文中还提供了请求成功的响应数据样例及请求效果截图。
springboot解决js前端跨域问题,javascript跨域问题解决
|
2月前
|
JavaScript
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
|
2月前
|
机器学习/深度学习 人工智能 JavaScript
JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景
本文探讨了JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景。JavaScript将注重性能优化、跨平台开发、AI融合及WebAssembly整合;TypeScript则强调与框架整合、强类型检查、前端工程化及WebAssembly的深度结合。两者结合发展,特别是在Vue 3.0中完全采用TypeScript编写,预示着未来的Web开发将更加高效、可靠。
68 4
|
2月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
72 5
|
2月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
53 2
|
2月前
|
缓存 前端开发 JavaScript
JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式
本文深入解析了JavaScript前端路由的实现原理及其在单页应用中的重要性,涵盖前端路由概念、基本原理、常见实现方式(Hash路由和History路由)、优点及挑战,并通过实际案例分析,帮助开发者更好地理解和应用这一关键技术,提升用户体验。
110 1
|
2月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
63 4

热门文章

最新文章