在此示例中,单击按钮会调用changeHeader() 函数,该函数使用DOM 通过其ID 来访问

元素。然后它会更改文本内容和标题的颜色。

基本 DOM 技术

1. 查询选择

使用 document.querySelector() 精确地抓取元素。

说明: querySelector() 允许您使用 CSS 选择器选择元素,使其成为访问 DOM 元素的强大且灵活的方式。

例子

// Select the first element with class \\'myClass\\'const element = document.querySelector(\\'.myClass\\');// Select a specific element by IDconst header = document.querySelector(\\'#header\\' );// Select the first 

inside a

const paragraph = document.querySelector(\\'div p\\');

2. 动态内容

修改innerHTML或textContent以动态更新页面内容。

说明:innerHTML 或 textContent 允许您动态更改元素的内容,从而实现交互式和响应式网页。

例子

// Using innerHTML (can include HTML tags)document.querySelector(\\'#myDiv\\').innerHTML = \\'New content!\\';// Using textContent (plain text only, safer for user inputs)document.querySelector(\\'#myParagraph\\').textContent = \\'Updated text content\\';

3. 事件监听

将 addEventListener() 附加到元素以实现交互式用户体验。

说明: addEventListener() 可让您响应用户操作,例如单击、按键或鼠标移动,从而创建交互式 Web 应用程序。

例子

const button = document.querySelector(\\'#myButton\\' );button. addEventListener( \\'click\\', function( ) {     alert( \\'Button clicked!\\')});// Using arrow functiondocument.addEventListener(\\'keydown\\', (event) => {     console. log( \\'Key pressed:\\', event.key);});

4.DOM遍历

使用parentNode、children 和siblings 属性在DOM 树中导航。

说明: DOM 遍历允许您在文档结构中移动,根据相关元素在 DOM 树中的位置访问相关元素。

例子

const child = document.querySelector(\\'#childElement\\');// Access parentconst parent = child.parentNode;// Access siblingsconst nextSibling = child.nextElementSibling;const prevSibling = child.previousElementSibling;// Access childrenconst firstChild = parent.firstElementChild;const allChildren = parent.children;

结论

DOM 是 JavaScript 中的一个强大工具,使开发人员能够创建丰富的交互式 Web 体验。通过理解和利用 DOM,开发人员可以控制网页的行为和外观,使它们更具吸引力并响应用户交互。

","image":"http://www.luping.net/uploads/20241003/172791973366fdf6751fecd.jpg","datePublished":"2024-11-02T19:01:30+08:00","dateModified":"2024-11-02T19:01:30+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 了解 JavaScript 中的文档对象模型 (DOM)

了解 JavaScript 中的文档对象模型 (DOM)

发布于2024-11-02
浏览:798

Understanding Document Object Model (DOM) in JavaScript

你好,神奇的 JavaScript 开发者?

浏览器提供了一个称为文档对象模型 (DOM) 的编程接口,它允许脚本(特别是 JavaScript)与网页布局进行交互。网页的文档对象模型 (DOM) 是一种分层树状结构,它将页面的组件排列成对象,由浏览器在加载时创建。借助此范例,文档的样式、组织和内容都可以动态访问和更改。

使用 DOM 进行交互

JavaScript可以对文档对象模型(DOM)进行很多操作,包括:

  • 修改HTML元素的内容
  • 添加或删除元素和属性
  • 响应点击或按键等用户事件
  • 在页面内创建新事件

例子

您可以使用 JavaScript 来更改元素的内容,方法是使用 document.getElementById() 函数定位元素,然后更改元素的 innerHTML 属性:

// Modify an element's content, access it using its ID
document.getElementById("myElement").innerHTML = "New content";

DOM结构

文档对象位于 DOM 的基础上,它被组织为对象树。每个 HTML 元素都表示为树中的一个节点,这些节点能够具有相关的事件、方法和属性。通过提供导航和使用这些节点的方法,DOM 使脚本能够实时更改页面。

以下是典型 HTML 文档的 DOM 树的基本示例:

document
├── html
│ ├── head
│ │ └── title
│ └── body
│ ├── h1
│ └── p

DOM 在 Web 开发中的作用

出于多种原因,DOM 对于 Web 开发至关重要。

  • 通过让脚本响应用户输入来更改页面的样式和内容,可以创建动态和交互式网页
  • 它通过为各种浏览器提供标准化接口来与在线页面交互和操作,从而确保跨平台的一致性。
  • 单页应用程序 (SPA) 依赖 DOM 刷新页面而不需要重新加载,因此这对其操作至关重要。

DOM 级别和标准

万维网联盟 (W3C) 维护 DOM 标准,该标准保证了其在各种 Web 浏览器和系统中的可靠性和一致性。该标准分为各个部分和级别,包括:

  • 所有文档类型的基础范例是 * Core DOM:.
  • XML 文档模型称为 XML DOM.
  • HTML DOM: 该模型是专门为 HTML 文件创建的。

每个 DOM 标准版本都添加了更多功能和功能,从而实现更复杂的在线文档操作和交互。

DOM 操作的真实世界插图

下面是如何使用 DOM 与 HTML 文档进行通信的真实示例:



DOM Example


Hello, World!

在此示例中,单击按钮会调用changeHeader() 函数,该函数使用DOM 通过其ID 来访问

元素。然后它会更改文本内容和标题的颜色。

基本 DOM 技术

1. 查询选择

使用 document.querySelector() 精确地抓取元素。

说明: querySelector() 允许您使用 CSS 选择器选择元素,使其成为访问 DOM 元素的强大且灵活的方式。

例子

// Select the first element with class 'myClass'

const element = document.querySelector('.myClass');

// Select a specific element by ID
const header = document.querySelector('#header' );

// Select the first 

inside a

const paragraph = document.querySelector('div p');

2. 动态内容

修改innerHTML或textContent以动态更新页面内容。

说明:innerHTML 或 textContent 允许您动态更改元素的内容,从而实现交互式和响应式网页。

例子

// Using innerHTML (can include HTML tags)

document.querySelector('#myDiv').innerHTML = 'New content!';

// Using textContent (plain text only, safer for user inputs)

document.querySelector('#myParagraph').textContent = 'Updated text content';

3. 事件监听

将 addEventListener() 附加到元素以实现交互式用户体验。

说明: addEventListener() 可让您响应用户操作,例如单击、按键或鼠标移动,从而创建交互式 Web 应用程序。

例子

const button = document.querySelector('#myButton' );

button. addEventListener( 'click', function( ) {
     alert( 'Button clicked!')
});

// Using arrow function
document.addEventListener('keydown', (event) => {
     console. log( 'Key pressed:', event.key);
});

4.DOM遍历

使用parentNode、children 和siblings 属性在DOM 树中导航。

说明: DOM 遍历允许您在文档结构中移动,根据相关元素在 DOM 树中的位置访问相关元素。

例子

const child = document.querySelector('#childElement');

// Access parent
const parent = child.parentNode;

// Access siblings
const nextSibling = child.nextElementSibling;
const prevSibling = child.previousElementSibling;

// Access children
const firstChild = parent.firstElementChild;
const allChildren = parent.children;

结论

DOM 是 JavaScript 中的一个强大工具,使开发人员能够创建丰富的交互式 Web 体验。通过理解和利用 DOM,开发人员可以控制网页的行为和外观,使它们更具吸引力并响应用户交互。

版本声明 本文转载于:https://dev.to/mursalfk/understanding-document-object-model-dom-in-javascript-2m1g?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,将常数列添加到Spark DataFrame,该列具有适用于所有行的任意值的Spark DataFrame,可以通过多种方式实现。使用文字值(SPARK 1.3)在尝试提供直接值时,用于此问题时,旨在为此目的的column方法可能会导致错误。 df.withco...
    编程 发布于2025-07-16
  • 为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    在CSS 问题:不正确的代码: 全球范围将所有余量重置为零,如提供的代码所建议的,可能会导致意外的副作用。解决特定的保证金问题是更建议的。 例如,在提供的示例中,将以下代码添加到CSS中,将解决余量问题: body H1 { 保证金顶:-40px; } 此方法更精确,避免了由全局保证金重置引...
    编程 发布于2025-07-16
  • CSS可以根据任何属性值来定位HTML元素吗?
    CSS可以根据任何属性值来定位HTML元素吗?
    靶向html元素,在CSS 中使用任何属性值,在CSS中,可以基于特定属性(如下所示)基于特定属性的基于特定属性的emants目标元素: 字体家庭:康斯拉斯(Consolas); } 但是,出现一个常见的问题:元素可以根据任何属性值而定位吗?本文探讨了此主题。的目标元素有任何任何属性值,属...
    编程 发布于2025-07-16
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-07-16
  • 解决Spring Security 4.1及以上版本CORS问题指南
    解决Spring Security 4.1及以上版本CORS问题指南
    弹簧安全性cors filter:故障排除常见问题 在将Spring Security集成到现有项目中时,您可能会遇到与CORS相关的错误,如果像“访问Control-allo-allow-Origin”之类的标头,则无法设置在响应中。为了解决此问题,您可以实现自定义过滤器,例如代码段中的MyFi...
    编程 发布于2025-07-16
  • C++20 Consteval函数中模板参数能否依赖于函数参数?
    C++20 Consteval函数中模板参数能否依赖于函数参数?
    [ consteval函数和模板参数依赖于函数参数在C 17中,模板参数不能依赖一个函数参数,因为编译器仍然需要对非contexexpr futcoriations contim at contexpr function进行评估。 compile time。 C 20引入恒定函数,必须在编译时进行...
    编程 发布于2025-07-16
  • 如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求模拟浏览器行为,以及伪造的用户代理提供了一个用户 - 代理标头一个有效方法是提供有效的用户式header,以提供有效的用户 - 设置,该标题可以通过browser和Acterner Systems the equestersystermery和操作系统。通过模仿像Chro...
    编程 发布于2025-07-16
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月份)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将...
    编程 发布于2025-07-16
  • Python环境变量的访问与管理方法
    Python环境变量的访问与管理方法
    Accessing Environment Variables in PythonTo access environment variables in Python, utilize the os.environ object, which represents a mapping of envir...
    编程 发布于2025-07-16
  • Java数组中元素位置查找技巧
    Java数组中元素位置查找技巧
    在Java数组中检索元素的位置 利用Java的反射API将数组转换为列表中,允许您使用indexof方法。 (primitives)(链接到Mishax的解决方案) 用于排序阵列的数组此方法此方法返回元素的索引,如果发现了元素的索引,或一个负值,指示应放置元素的插入点。
    编程 发布于2025-07-16
  • 如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    如何将多种用户类型(学生,老师和管理员)重定向到Firebase应用中的各自活动?
    Red: How to Redirect Multiple User Types to Respective ActivitiesUnderstanding the ProblemIn a Firebase-based voting app with three distinct user type...
    编程 发布于2025-07-16
  • 表单刷新后如何防止重复提交?
    表单刷新后如何防止重复提交?
    在Web开发中预防重复提交 在表格提交后刷新页面时,遇到重复提交的问题是常见的。 To address this, consider the following approach:Imagine having a code snippet that looks something like thi...
    编程 发布于2025-07-16
  • 如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    在Visual Studio 2012 尽管已安装了MySQL Connector v.6.5.4,但无法将MySQL数据库添加到实体框架的“ DataSource对话框”中。为了解决这一问题,至关重要的是要了解MySQL连接器v.6.5.5及以后的6.6.x版本将提供MySQL的官方Visual...
    编程 发布于2025-07-16
  • 如何在Chrome中居中选择框文本?
    如何在Chrome中居中选择框文本?
    选择框的文本对齐:局部chrome-inly-ly-ly-lyly solument 您可能希望将文本中心集中在选择框中,以获取优化的原因或提高可访问性。但是,在CSS中的选择元素中手动添加一个文本 - 对属性可能无法正常工作。初始尝试 state)</option> < op...
    编程 发布于2025-07-16
  • 如何将来自三个MySQL表的数据组合到新表中?
    如何将来自三个MySQL表的数据组合到新表中?
    mysql:从三个表和列的新表创建新表 答案:为了实现这一目标,您可以利用一个3-way Join。 选择p。*,d.content作为年龄 来自人为p的人 加入d.person_id = p.id上的d的详细信息 加入T.Id = d.detail_id的分类法 其中t.taxonomy =...
    编程 发布于2025-07-16

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3