- HTML 教程
- HTML - 首页
- HTML - 路线图
- HTML - 简介
- HTML - 历史与演变
- HTML - 编辑器
- HTML - 基本标签
- HTML - 元素
- HTML - 属性
- HTML - 标题
- HTML - 段落
- HTML - 字体
- HTML - 块
- HTML - 样式表
- HTML - 格式化
- HTML - 引号
- HTML - 注释
- HTML - 颜色
- HTML - 图片
- HTML - 图片地图
- HTML - 内嵌框架
- HTML - 短语元素
- HTML - 元标签
- HTML - 类
- HTML - ID
- HTML - 背景
- HTML 表格
- HTML - 表格
- HTML - 表格标题和说明
- HTML - 表格样式
- HTML - 表格 Colgroup
- HTML - 嵌套表格
- HTML 列表
- HTML - 列表
- HTML - 无序列表
- HTML - 有序列表
- HTML - 定义列表
- HTML 链接
- HTML - 文本链接
- HTML - 图片链接
- HTML - 邮件链接
- HTML 颜色名称和值
- HTML - 颜色名称
- HTML - RGB
- HTML - HEX
- HTML - HSL
- HTML 表单
- HTML - 表单
- HTML - 表单属性
- HTML - 表单控件
- HTML - 输入属性
- HTML 媒体
- HTML - 视频元素
- HTML - 音频元素
- HTML - 嵌入多媒体
- HTML 头部
- HTML - 头元素
- HTML - 添加 Favicon
- HTML - Javascript
- HTML 布局
- HTML - 布局
- HTML - 布局元素
- HTML - 使用 CSS 进行布局
- HTML - 响应式设计
- HTML - 符号
- HTML - 表情符号
- HTML - 样式指南
- HTML 图形
- HTML - SVG
- HTML - Canvas
- HTML API
- HTML - 地理位置 API
- HTML - 拖放 API
- HTML - Web Workers API
- HTML - WebSocket
- HTML - Web 存储
- HTML - 服务器发送事件
- HTML 杂项
- HTML - 文档对象模型 (DOM)
- HTML - MathML
- HTML - 微数据
- HTML - IndexedDB
- HTML - Web 消息传递
- HTML - Web CORS
- HTML - Web RTC
- HTML 演示
- HTML - 音频播放器
- HTML - 视频播放器
- HTML - 网页幻灯片
- HTML 工具
- HTML - Velocity Draw
- HTML - 二维码
- HTML - Modernizer
- HTML - 验证
- HTML - 颜色拾取器
- HTML 参考
- HTML - 速查表
- HTML - 标签参考
- HTML - 属性参考
- HTML - 事件参考
- HTML - 字体参考
- HTML - ASCII 码
- ASCII 表格查找
- HTML - 颜色名称
- HTML - 实体
- MIME 媒体类型
- HTML - URL 编码
- 语言 ISO 代码
- HTML - 字符编码
- HTML - 已弃用的标签
- HTML 资源
- HTML - 快速指南
- HTML - 有用资源
- HTML - 颜色代码生成器
- HTML - 在线编辑器
HTML - 文档对象模型
HTML 文档对象模型 (DOM)
HTML 文档对象模型(简称 HTML DOM)以分层顺序(或树状结构)表示 HTML 文档的所有元素。其中此树的每个节点都代表 HTML 文档中的一个元素。
访问和修改 HTML DOM
使用 HTML DOM 方法,我们可以访问树并修改相应 HTML 文档的结构或内容。我们还可以将事件附加到节点。
HTML DOM 树结构
例如,如果您的 HTML 文档包含诸如 <html>、<head>、<body>、<title>、<link>、<img> 和 <p> 等元素,则浏览器将创建 HTML 文档的 DOM 树,可以表示如下所示的图中 -
请注意,每个 HTML 文档都包含 <html>、<head> 和 <body> 标签。根元素是 <html>,<head> 和 <body> 标签是其子元素。
什么是文档对象模型?
文档对象模型 (DOM) 是一种编程接口,充当网页和脚本或编程语言之间的桥梁。它将网页文档(如 HTML 或 XML)表示为对象的树,其中树的每个分支都以节点结尾,并且每个节点都包含对象。
单击下面给出的按钮以正确理解它。它将生成一个 DOM 树。
DOM 提供了一组方法,允许诸如 JavaScript 等编程语言访问 DOM 树。使用这些方法,您可以更改文档的结构、样式或内容。它使网页具有交互性和动态性。
DOM 不是一种编程语言,它被设计为与语言无关。大多数 Web 开发人员通过 JavaScript 使用 DOM,但是,可以为任何语言构建 DOM 的实现。
HTML DOM 与 JavaScript DOM
我们使用 HTML 来构建网页,并使用 JavaScript 使其具有交互性。但是,JavaScript 无法直接理解网页。它借助 HTML DOM。当 HTML 页面加载时,浏览器会创建页面的对象模型,然后 JavaScript 可以与之交互以操纵页面的内容、结构和样式。
JavaScript 可以借助对象模型执行以下操作 -
- 访问和替换 HTML 元素。
- 访问和替换 HTML 属性。
- 更改页面中的所有 CSS 样式。
- 响应用户事件。
- 为网页添加动画。
下表说明了 HTML DOM 和 JavaScript DOM 之间的区别 -
HTML DOM | JavaScript DOM |
---|---|
HTML DOM 是 HTML 的对象模型,它以树状结构表示 HTML 文档的所有元素。 |
HTML DOM 是 JavaScript 的 API,有助于添加、更改和替换 HTML 文档的元素、属性和事件。 |
DOM 方法参考
以下是重要 DOM 方法的列表 -
序号 | 方法和描述 |
---|---|
1. | toString()
它用于将 HTML 元素转换为字符串格式。 |
2. | setAttribute()
此方法允许您为特定元素定义属性。 |
3. | setAttributeNode()
此方法允许您在特定元素上定义特定属性节点。 |
4. | scrollIntoView()
它确保可滚动容器的网页上的特定元素通过调整滚动位置变得可见。 |
5. | querySelector()
它用于选择和访问文档中与给定 CSS 选择器匹配的第一个 HTML 元素。 |
6. | querySelectorAll()
此方法允许您选择和访问文档中与给定 CSS 选择器匹配的所有 HTML 元素。 |
7. | remove()
此方法可以完全从网页中删除元素。 |
8. | removeAttribute()
此方法用于删除已在 DOM 结构中的 HTML 元素上设置的任何属性。 |
9. | removeAttributeNode()
它允许您从元素中删除特定属性节点。 |
10. | removeChild()
它用于从其父元素中删除选定的子元素。 |
11. | removeEventListener()
此方法允许您删除先前分配给元素的事件侦听器。 |
12. | replaceChild()
此方法使我们能够用另一个子元素替换父元素中的一个子元素。 |
13. | hasAttribute()
它用于检查 HTML 元素中是否存在属性。 |
14. | hasAttributes()
此方法检查 HTML DOM 中的元素是否具有属性。 |
15. | hasChildNodes()
它用于检查 HTML 元素内部是否有任何子元素。 |
序号 | 方法和描述 |
---|---|
16. | getAttribute()
它返回属于 HTML 元素的指定属性的值。 |
17. | getBoundingClientRect()
此方法用于获取元素的大小及其相对于视口的定位。 |
18. | closest()
此方法返回当前元素(或当前元素本身)与给定 CSS 选择器匹配的最接近的祖先。如果不存在这样的祖先,则返回 null。 |
19. | contains()
您可以使用此方法检查 DOM 元素是否在其子树中包含另一个元素。 |
20. | click()
click() 方法在元素上激活鼠标点击。 |
21. | normalize()
它用于通过删除任何空文本节点来组合 HTML 元素内的相邻文本节点。 |
22. | isDefaultNamespace()
它用于检查特定的命名空间 URI 是否是文档或元素中元素的默认命名空间。 |
23. | isEqualNode()
此方法通过比较它们的属性、类型和子节点来检查两个节点是否相等。 |
24. | isSameNode()
它检查两个节点引用是否指向 HTML 文档中的同一节点对象。 |
25. | isSupported()
此方法用于检查 Web 浏览器是否可以支持或处理网页上的特定功能或功能。 |
26. | insertAdjacentElement()
此方法允许您在网页上相对于另一个元素的位置准确插入新的 HTML 元素。 |
27. | insertBefore()
此方法允许您在父元素内添加新的子元素,指定其相对于另一个子元素的位置。 |
28. | blur()
此方法允许您动态地从 HTML DOM 中的元素中移除焦点。 |
29. | matches()
此方法检查元素是否与给定的 CSS 选择器匹配。 |
30. | insertAdjacentHTML()
它可以帮助您在相对于调用此方法的元素的特定位置插入指定的 HTML 代码。 |
31. | addEventListener()
它用于向元素注册事件处理程序。 |
32. | cloneNode()
它复制节点,包括其属性和子节点。 |
33. | appendChild()
此方法用于将一个新的子节点(元素)作为指定父节点的最后一个子节点添加。 |
34. | compareDocumentPosition()
通过比较两个 DOM 元素(节点)的位置来理解文档结构,并返回一个位掩码(数值)。 |
35. | focus()
此方法将焦点设置到特定的网页元素。 |
36. | getAttributeNode()
用于获取属性节点对象。 |
37. | getElementsByClassName()
此方法检索一个实时 HTMLCollection,其中包含在文档或特定元素内与指定类名匹配的元素。 |
38. | getElementsByTagName()
检索一个实时 HTMLCollection,其中包含与指定标签名匹配的元素。 |
39. | insertAdjacentText()
允许您在相对于调用此方法的元素的特定位置插入文本内容。 |
40. | namedItem()
用于获取集合中第一个 ID 或名称与参数中提到的名称匹配的元素。 |
41. | item()
返回参数中指定索引位置的 HTMLCollection 中的元素。 |
42. | entries()
此方法检索一个迭代器,允许我们遍历对象中的所有键/值对。 |
43. | forEach()
此方法根据插入顺序,对列表中的每个值对调用参数中提到的回调函数一次。 |
44. | item()
此方法从参数中指定的索引处检索 NodeList 中的节点。 |
45. | keys()
此方法检索一个迭代器,允许我们遍历 NodeList 中包含的所有键。 |
46. | writeln()
此方法提供将 HTML 或 JavaScript 表达式直接写入文档的功能。它在每个语句后添加一个换行符。 |
47. | write()
此方法提供将 HTML 或 JavaScript 表达式直接写入文档的功能。 |
48. | hasFocus()
用于确定文档或文档内的任何元素是否具有焦点。 |
49. | renameNode()
用于重命名节点。 |
50. | open()
此方法打开文档以进行写入。 |
51. | normalizeDocument()
此方法规范化整个 HTML 文档。 |
52. | normalize()
它删除空文本节点,并将父节点中的相邻文本节点连接起来。 |
53. | adoptNode()
此方法将来自另一个文档的节点采用到当前文档中。 |
54. | addEventListener()
用于设置一个函数,每当指定的事件传递到目标时,就会调用该函数。 |
55. | execCommand()
此方法用于在用户选择的可编辑部分上执行指定的命令。 |
56. | createTextNode()
用于使用指定的文本创建一个文本节点。 |
57. | createEvent()
用于创建一个事件对象,其事件类型在参数中指定。 |
58. | createDocumentFragment()
创建一个新的空文档片段,该片段驻留在内存中。 |
59. | createComment()
此方法用于使用给定的文本创建注释节点。 |
60. | createAttribute()
用于使用 JavaScript 为 HTML 元素创建具有特定名称的属性,并返回 Attr 对象。 |
61. | close()
关闭输出流。 |
62. | getElementsByTagName()
这是一个只读方法,用于获取文档中所有具有参数中指定标签名的元素的集合。 |
63. | getElementsByName()
此方法用于返回具有参数中指定的 name 属性的元素集合。 |
64. | getElementsByClassName()
此方法用于获取文档中所有具有指定类名的元素的集合。 |
65. | getElementById()
返回给定 ID 的元素。 |
66. | createElement()
此方法根据标签名或元素名创建 HTML 元素。 |
67. | add()
此方法将参数中指定的一个或多个标记添加到 DOMTokenList 中。 |
68. | contains()
此方法检查列表是否包含指定的标记,并相应地返回布尔值。 |
69. | entries()
此方法返回一个迭代器,允许遍历所有键/值对。 |
70. | forEach()
此方法根据插入顺序,对列表中的每个值对调用参数中提到的回调函数一次。 |
71. | item()
此方法返回参数中指定索引处的 DOMTokenList 中的标记。 |
72. | keys()
此方法返回一个迭代器,允许您遍历标记列表中包含的所有键。 |
73. | remove()
此方法从 DOMTokenList 中删除参数中指定的一个或多个标记。 |
74. | replace()
此方法用参数中指定的新标记替换 DomTokenList 中现有的标记。 |
75. | supports()
此方法检查参数中指定的标记是否在 DOMTokenList 中受支持。 |
76. | toggle()
此方法动态地向元素的 class 属性添加或删除标记或类。 |
77. | values()
此方法返回一个迭代器,允许我们遍历标记列表中包含的所有值。 |
DOM 属性参考
以下是重要的 DOM 属性列表:
序号 | 方法和描述 |
---|---|
1. | title
它帮助我们访问和更新存储在元素的 title 属性中的值。 |
2. | textContent
此属性用于访问和更新 HTML 元素及其所有子元素的文本内容,作为一个字符串。 |
3. | tagName
它以大写形式提供定义网页上元素的 HTML 标签的名称。 |
4. | style
使用此属性,您可以获取直接为特定元素设置的 CSS 样式。 |
5. | tabIndex
用于访问和更新元素的 tabIndex 属性的值。 |
6. | scrollLeft
此属性用于访问和更新元素内容水平滚动的距离。 |
7. | scrollTop
用于访问和更新元素内容垂直滚动的距离。 |
8. | scrollWidth
此属性以像素为单位提供元素内容的总水平宽度。 |
9. | scrollHeight
您可以使用此属性以像素为单位获取元素内容的总垂直高度。 |
10. | id
id 属性用于设置和检索元素的 id 属性的值。 |
11. | innerText
它允许我们检索或更改网页上 HTML 元素内的可见文本内容。 |
12. | isContentEditable
用于检查网页元素是否可以由用户直接编辑。 |
13. | lang
lang 属性是 HTML 元素的属性,用于指定语言代码。 |
14. | lastChild
lastChild 属性返回一个指向特定父元素的最后一个子节点的节点。 |
15. | lastElementChild
它返回一个包含父元素的最后一个子元素的节点。 |
序号 | 属性和描述 |
---|---|
16. | namespaceURI
元素的 namespaceURI 属性提供分配给该元素的命名空间 URI。 |
17. | nextElementSibling
使用此属性,您可以获取特定元素序列中的下一个节点。 |
18. | nextSibling
用于访问 DOM 树中当前节点之后的下一个节点。 |
19. | nodeName
此属性用于根据节点的内容识别节点的类型和名称。 |
20. | nodeType
nodeType 属性返回一个整数,表示节点的类型。 |
21. | nodeValue
用于访问和更新节点的值。 |
22. | offsetHeight
此属性用于获取网页上该元素的完整可见高度,包括其垂直填充和边框,以像素为单位。 |
23. | offsetLeft
它返回从元素的左边界到其最近的定位父元素的左边界的距离(以像素为单位)。 |
24. | offsetParent
用于查找影响另一个元素定位的最近的祖先元素。 |
25. | offsetWidth
元素的 offsetWidth 属性提供网页上该元素的总可见宽度。 |
26. | outerHTML
outerHTML 属性获取元素的整个 HTML 代码。 |
27. | outerText
此属性可以访问或更新 HTML 元素的文本内容,包括其所有嵌套的文本和元素。 |
28. | ownerDocument
它提供包含特定元素的文档节点的对象。 |
29. | parentElement
它允许您访问 HTML 元素中特定元素的直接父元素。 |
30. | parentNode
此属性用于访问 HTML 元素中特定节点的直接父节点。 |
31. | classList
它充当一个活动的容器,保存分配给元素的 class 属性的 CSS 类集合。 |
32. | childNodes
用于检索元素的所有子节点,包括元素、文本节点和注释。 |
33. | className
您可以使用此属性访问或修改元素的 class 属性的值。 |
34. | clientTop
用于在网页布局中获取准确的元素定位和大小计算。 |
35. | firstElementChild
它提供给定父元素中的第一个子元素。 |
36. | offsetTop
使用此属性,您可以获取从元素顶部边缘到其最近的定位祖先元素顶部边缘的垂直距离(以像素为单位)。 |
37. | attributes
它返回包含 HTML 元素属性集合的“NameNodeMap”。 |
38. | accesskey
此属性允许您为网页上的元素分配键盘快捷键。 |
39. | firstChild
它帮助您访问 HTML DOM 中给定父元素的第一个子节点。 |
40. | innerHTML
此属性允许我们读取元素的现有 HTML 内容并使用新的 HTML 内容更新它。 |
41. | dir
它提供访问权限,用于设置和检索 HTML 中任何元素的 dir 属性的值。 |
42. | contentEditable
您可以使用此属性使 HTML 元素内的文本内容可编辑。 |
43. | clientWidth
它返回元素的宽度,包括填充,但不包括边距、边框或滚动条宽度。 |
44. | clientLeft
此属性用于获取元素的左边框宽度,不包括左填充或边距。 |
45. | clientHeight
用于获取元素的内部高度,包括填充,但不包括边距、边框或滚动条宽度。 |
46. | children
此属性返回子元素的集合。 |
47. | childElementCount
它返回指定元素的直接子元素的数量。 |
48. | src
此属性用于 <img>、<script> 或 <iframe> 等元素,以获取或设置源 URL。 |
49. | href
此属性用于锚 <a> 元素,以获取或设置超链接引用。 |
50. | checked
此属性用于获取或设置复选框或单选按钮的选中状态。 |
51. | disabled
此属性用于获取或设置输入元素的禁用状态。 |
52. | length
它返回 HTMLCollection 中元素的数量。 |
53. | length
此方法返回 NodeList 中项目的数量。 |
54. | value
此属性用于设置或获取属性的值。 |
55. | specified
它检查是否指定了提到的属性。 |
56. | name
用于获取元素上使用属性的名称。 |
57. | isId
此属性用于确定 HTML 属性是否为“id”属性。 |
58. | URL
这是一个只读属性,返回文档的完整 URL,包括协议。 |
59. | title
此属性用于设置或获取文档的标题。 |
60. | strictErrorChecking
用于确定文档是否强制执行严格错误检查。 |
61. | scripts
这是一个只读属性,用于将 HTML 文档中存在的所有脚本元素作为集合返回。 |
62. | links
links 是一个只读属性,它返回与具有 href 属性的 a 和 area 元素相对应的所有链接的集合。 |
63. | lastModified
此属性返回当前文档上次修改时的日期和时间。 |
64. | inputEncoding
inputEncoding 属性返回一个字符串,表示文档的字符编码。 |
65. | implementation
这将返回与当前文档关联的 DOMImplementation 对象。 |
66. | images
这是一个只读属性,用于将 HTML 文档中存在的所有 img 元素作为集合返回。 |
67. | head
head 属性返回 HTML head 元素。 |
68. | forms
forms 是一个只读属性,用于将 HTML 文档中存在的所有表单元素作为集合返回。 |
69. | embeds
这是一个只读属性,它返回 HTML 文档中存在的所有嵌入元素的集合。 |
70. | domConfig
此属性已弃用,因此在所有新浏览器中都将返回 undefined。 |
71. | documentURI
此属性用于设置或返回文档的位置。 |
72. | documentMode
documentMode 属性是 IE8 属性,用于确定浏览器使用的渲染模式。 |
73. | documentElement
它将 documentElement 作为元素对象返回。 |
74. | doctype
此属性返回与当前 HTML 文档关联的 DTD(文档类型声明)。 |
75. | designMode
它可以帮助我们确定整个文档是否可编辑。 |
76. | defaultView
用于返回文档的窗口对象。 |
77. | cookie
HTML DOM document cookie 属性用于创建、读取和删除 cookie。 |
78. | charset
它返回 HTML 文档的字符编码。 |
79. | applets
用于返回文档中所有 applet 元素的列表,但此属性现已弃用。 |
80. | characterSet
此属性用于获取文档的字符编码。 |
81. | anchors
anchors 属性是一个只读属性,列出文档中所有具有 name 属性的“a”标签。 |
82. | baseURI
用于返回文档的基本统一资源标识符 (URI)。 |
83. | length
此方法返回令牌列表中的令牌数。 |
84. | value
此方法将 DOMTokenList 序列化为字符串。 |
85. | domain
用于获取当前正在执行文档的服务器的域名。 |
关于 DOM 的常见问题
关于 DOM 有几个常见问题 (FAQ),本节尝试简要回答其中一些问题。
DOM 的全称是文档对象模型。
在 JavaScript 中,DOM 用于与 HTML 网页交互并操作页面的内容、结构和样式。
不,DOM 不是一种编程语言。它是一个将网页连接到编程语言的编程接口。
DOM 接口提供各种方法和属性来交互和操作网页。一些常见的接口包括 Document、Element、Event 等等。