首页 > 编程语言 >前端技术对JavaScript中DOM的学习

前端技术对JavaScript中DOM的学习

时间:2024-11-27 19:33:11浏览次数:4  
标签:JavaScript DOM 前端 元素 element var document 节点

DOM


目录

DOM树结构

  1. 根节点(Root Node):在HTML文档中,<html>元素是整个DOM树的根节点。它包含了文档的所有其他部分。
  2. 元素节点(Element Node):这些节点对应了HTML或XML文档中的标签,如<body><p>等。元素节点可以有子节点,包括其他元素节点、文本节点或注释节点等。
  3. 文本节点(Text Node):这些节点包含了元素或属性中的文本内容。在HTML文档中,<p>Hello, world!</p>中的"Hello, world!"就是一个文本节点。
  4. 属性节点(Attribute Node):虽然在现代的DOM实现中,属性通常不直接表现为DOM树中的节点(它们是通过元素节点的属性或方法来访问的),但在早期的DOM规范中,属性被视为节点。在更现代的实践中,我们通过元素节点的属性(如element.getAttribute()element.setAttribute())来操作属性。
  5. 注释节点(Comment Node):这些节点表示HTML或XML文档中的注释,例如<!-- 这是一个注释 -->
  6. 文档节点(Document Node):这代表了整个文档,它是DOM树中的顶级节点,虽然它本身不直接显示在树状图中,但它是访问整个DOM树的入口点。

示例:

<!DOCTYPE html>  
<html>  
<head>  
    <title>示例页面</title>  
</head>  
<body>  
    <p>这是一个段落。</p>  
</body>  
</html>

对应的DOM树结构会是这样的:

  • Document(文档节点,非直接显示)
    • html(元素节点,根节点)
      • head(元素节点)
        • title(元素节点)
          • 文本节点(内容为“示例页面”)
      • body(元素节点)
        • p(元素节点)
          • 文本节点(内容为“这是一个段落。”)

通过DOM API,我们可以访问、修改或删除这个树中的任何节点,从而动态地改变网页的内容和结构。

获取DOM对象

1.通过ID获取:如果你知道元素的ID,可以使用document.getElementById()方法。这是最直接且常用的方法之一。

var element = document.getElementById("myElementId");

这里,"myElementId"是你要获取的元素的ID。

2.通过类名获取:如果你想要获取具有特定类名的所有元素,可以使用document.getElementsByClassName()方法。注意,这个方法返回的是一个HTMLCollection,即使只有一个匹配的元素也是如此。

var elements = document.getElementsByClassName("myClassName");  
// 访问第一个元素  
var firstElement = elements[0];

3.通过标签名获取:如果你想要获取文档中所有的特定标签(如<p><div>等),可以使用document.getElementsByTagName()方法。同样,这个方法也返回一个HTMLCollection。

var elements = document.getElementsByTagName("p");  
// 访问第一个<p>元素  
var firstParagraph = elements[0];
  1. 通过css选择器获取:现代浏览器支持document.querySelector()document.querySelectorAll()方法,它们允许你使用CSS选择器来获取DOM元素。querySelector()返回第一个匹配的元素,而querySelectorAll()返回一个NodeList,包含所有匹配的元素。
// 获取第一个匹配的元素  
var element = document.querySelector(".myClassName");  
  
// 获取所有匹配的元素  
var elements = document.querySelectorAll(".myClassName");  
// 访问第一个元素  
var firstElement = elements[0];

更新DOM对象

1.修改属性:你可以直接修改DOM元素的属性来更新它。例如,修改元素的classNamestyletextContent等。

// 修改元素的类名  
var element = document.getElementById("myElementId");  
element.className = "newClassName";  
  
// 修改元素的样式  
element.style.color = "red";  
  
// 修改元素的文本内容  
element.textContent = "新的文本内容";

2.替换内容:使用innerHTML属性可以替换元素内部的所有内容,包括子元素和文本。但请注意,这可能会导致性能问题,并且如果内容包含用户输入,还可能引起XSS攻击。

// 替换元素内部的所有内容  
element.innerHTML = '<p>新的HTML内容</p>';

插入DOM对象

你可以使用appendChild()insertBefore()等方法来插入新的子节点,或者使用removeChild()来删除子节点。

// 创建一个新的元素  
var newElement = document.createElement("div");  
newElement.textContent = "新元素";  
  
// 将新元素添加到现有元素的末尾  
element.appendChild(newElement);  
  
// 或者,在指定元素之前插入新元素  
var referenceElement = document.getElementById("referenceElementId");  
element.insertBefore(newElement, referenceElement);  

删除DOM对象

使用removeChild()来删除子节点。

<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另外一个段落。</p>
</div>
 
<script>
var parent = document.getElementById("div1");
var child = document.getElementById("p1");
parent.removeChild(child);
</script>

HTML 文档中

元素包含两个子节点 (两个

元素):

<div id="div1">
<p id="p1">这是一个段落。</p>
<p id="p2">这是另外一个段落。</p>
</div>

查找 id="div1" 的元素:

var parent = document.getElementById("div1");

查找 id="p1" 的

元素:

var child = document.getElementById("p1");

从父元素中移除子节点:

parent.removeChild(child);

以下代码是已知要查找的子元素,然后查找其父元素,再删除这个子元素(删除节点必须知道父节点):

var child = document.getElementById("p1");

标签:JavaScript,DOM,前端,元素,element,var,document,节点
From: https://www.cnblogs.com/BingBing-8888/p/18572941

相关文章

  • JavaScript 设置 Cookie 中的 HttpOnly 标志为什么无法生效?
    javascript设置cookie中的httponly为什么以下代码无法设置Cookie的HttpOnly标志?document.cookie='url=https://www.test.com/;expires=0;path=/;HttpOnly;';答案在客户端端(JavaScript)无法设置HttpOnly标志。HttpOnly标志必须在服务端添加。这一标志旨在防止客......
  • 淘宝代购系统;海外代购系统;代购程序,代购系统源码PHP前端源码介绍
    淘宝代购集运系统背景:淘宝代购集运系统,是在全球化背景下跨境电商的一个重要模式,为海外消费者提供了方便的渠道来购买中国商品。这种商业模式依托于中国庞大的电商市场和商品多样性,通过代购和集运服务,让全球用户能够享受到中国市场的丰富商品资源。(复制Taobaoapi2014获取de......
  • 深入探讨 JavaScript 的事件循环
    深入探讨JavaScript的事件循环......
  • 前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题,用了mock之后,下载不起
    参考链接:https://blog.csdn.net/weixin_46872121/article/details/135616496前言:本是一个非常简单的请求,即是下载文件。通常的做法如下:1.前端通过VueAxios向后端请求,同时在请求中设置响应体为Blob格式。2.后端相应前端的请求,同时返回Blob格式的文件给到前端(如果没有步骤1设置......
  • react父组件调用子组件内部的dom或方法
    在React中,通过 React.forwardRef 和 useImperativeHandle 可以实现将父组件的 ref 转发给子组件,从而引用子组件的DOM或方法。以下是实现的步骤和代码示例:importReact,{forwardRef,useImperativeHandle,useRef}from"react";constChild=forwardRef((props,......
  • JavaScript第一章,基础,对话框,函数1.2
    1.系统对话框系统对话框是浏览器提供的一组用于与用户交互的对话框,包括:alert():显示一个带有消息的警告框。confirm():显示一个带有确认和取消按钮的对话框,返回布尔值 true 或 false。prompt():显示一个可提示用户输入的对话框,返回用户输入的字符串(如果用户取消则返回 null......
  • 【Springboot】全局异常可以捕获但无法返回给前端
    场景创建全局自定义异常处理类@Slf4j@ControllerAdvicepublicclassGlobalExceptionHandler{/***全局异常处理,统一返回rtnCode=2**@parame*@return*/@ExceptionHandler(Exception.class)publicObjecthandleException(......
  • 第十章 JavaScript的应用
    10.1JavaScript概述10.1.1JavaScript简介JavaScript是一种基于对象(0bject)和事件驱动(EventDriven)并具有安全性能的脚本语言,能够与HTML(超文本标记语言)、Java语言一起在Web页面中与Web客户交互它无须经过先将数据传给服务器端(Server)、再传回来的过程,而直接可以由客户......
  • JavaScript基础语法
    一.数据类型1.基本类型数字整数小数字符串'' ""都可以布尔类型vard=true;只需要用var声明不需要在前面声明数据类型打印出来undefined说明声明一个变量但没有赋值null涉及到一个量但是这个量是空说明没有声明2.复合类型数组数组通过下标访问arr.length获......
  • 前端Symbol的常见用法
    文章目录前端Symbol介绍及其常见用法一、Symbol函数的创建二、Symbol的常见用法三、Symbol的注意事项前端Symbol介绍及其常见用法Symbol是ES6中新增的一种基本数据类型,它表示独一无二的值。在前端开发中,Symbol具有多种用途,可以用于创建唯一对象属性名、定义对象的......