Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >文档对象模型

文档对象模型

作者头像
小小鱼儿小小林
发布于 2020-06-24 02:56:29
发布于 2020-06-24 02:56:29
1.4K0
举报
文章被收录于专栏:灵儿的笔记灵儿的笔记

DOM是针对HTML和XML文档的一个API(应用程序编程接口),DOM描绘了一个层次化的节点树,允许开发人员添加,移除,修改页面的某一部分。1998年10月DOM1级规范成为W3C的推荐标准,为基本的文档结构以及查询提供了接口。但是要注意,IE中的所有DOM对象都是以COM对象的形式实现的。这意味着IE中的DOM对象与原生JavaScript对象的行为或活动特点并不一致。

DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构。节点分为几种不同的类型,每种类型分别表示文档中不同的信息或标记。每个节点拥有各自的特点,数据和方法,另外也有与其他节点存在某种关系。节点之间的关系构成了层次,所有页面标记则表现为一个以特定节点为根节点的树形结构。

1) Node类型

DOM1级定义为一个Node接口,该接口将由DOM中的所有节点类型实现。除了IE之外,在其他所有浏览器中都可以访问到这个类型。javascript中所有的节点类型都继承自Node类型,所有节点类型都共享着相同的基本属性和方法。

1. 节点关系

属性:

nodeType

表示节点类型

Element 1;TextNode 3;Comment 8;Document 9

nodeName

该属性取决于节点类型,如果是元素类型,值为元素的标签名

nodeValue

该属性取决于节点类型,如果是元素类型,值有null

childNodes

属性,保存一个NodeList对象,NodeList是一种类数组对象用来保存一组有序的节点,NodeList是基于DOM结构动态执行查询的结果,DOM结构变化可以自动反应到NodeList对象中。访问时可以通过中括号访问,也可以通过item()方法访问。

parentNode

指向文档树中的父节点。包含在childNodes列表中所有的节点都具有相同的父节点,每个节点之间都是同胞/兄弟节点。

previousSibling

兄弟节点中的前一个节点

nextSibling

兄弟节点中的下一个节点

firstChild

childNodes列表中的第一个节点

lastChild

childNodes列表中的最后一个节点

ownerDocument

指向表示整个文档的文档节点。任何节点都属于它所在的文档,任何节点都不能同时存在于两个或更多个文档中。

方法:

hasChildNodes()

在包含一个或多个子节点的情况下返回true

2) Document类型

javascript通过使用Document类型表示文档。在浏览器中,document对象是HTMLDocument的一个实例,表示整个HTML页面。document对象是window对象的一个属性,因此可以直接调用。HTMLDocument继承自Document

1. 文档子节点

可以继承Node中所有的属性和方法

属性:

documentElement 始终指向HTML页面中的<html>元素。

body 直接指向<body>元素

doctype 访问<!DOCTYPE>, 浏览器支持不一致,很少使用

title 获取文档的标题

URL 取得完整的URL

domain 取得域名,并且可以进行设置,在跨域访问中经常会用到。

referrer 取得链接到当前页面的那个页面的URL,即来源页面的URL

images 获取所有的img对象,返回HTMLCollection类数组对象

forms 获取所有的form对象,返回HTMLCollection类数组对象

links 获取文档中所有带href属性的<a>元素

2. 查找元素

getElementById()

参数为要取得元素的ID,如果找到返回该元素,否则返回null如果页面中多个元素的ID值相同,只返回文档中第一次出现的元素。如果某个表单元素的name值等于指定的ID,该元素也会被匹配。

getElementsByTagName()

参数为要取得元素的标签名,返回包含0个或者多个元素的NodeList,在HTML文档中该方法返回的是HTMLCollection对象,与NodeList非常类似。可以通过[index/name],item(),namedItem(name)访问

getElementsByName()

参数为元素的name,返回符合条件的HTMLCollection

getElementsByClassName()

参数为一个字符串,可以由多个空格隔开的标识符组成。当元素的class属性值包含所有指定的标识符时才匹配。HTML元素的class属性值是一个以空格隔开的列表,可以为空或包含多个标识符。

3.操作节点和节点内容

document对象的方法:

write() 这个方法可以把任意字符串插入到文档中

createElement() 创建一个元素节点

createTextNode() 创建一个文件节点

以下四个方法都需要父节点对象进行调用!

appendChild()

向childNodes列表末尾添加一个节点。返回新增的节点。关系更新如果参数节点已经为文档的一部分,位置更新而不插入,dom树可以看做是由一系列的指针连接起来的,任何DOM节点不能同时出现在文档中的多个位置。

insertBefore()

第一个参数:要插入的节点;

第二个参数:作为参照的节点;

被插入的节点会变成参照节点的前一个同胞节点,同时被方法返回。如果第二个参数为null将会将该节点追加在NodeList后面

replaceChild()

第一个参数:要插入的节点;

第二个参数:要替换的节点;

要替换的节点将由这个方法返回并从文档树中被移除,同时由要插入的节点占据其位置。

removeChild()

一个参数,即要移除的节点。

移除的节点将作为方法的返回值。其他方法,任何节点对象都可以调用。

3 Element类型

1. HTML元素

所有的HTML元素都由HTMLElement类型表示,或者其子类型表示。每个HTML元素都应具有如下一些属性以及html元素特有的属性。

id 元素在文档中的唯一标识符

title 有关元素的附加说明信息

className 与元素class特性对应

src img元素具有的属性

alt img元素具有的属性

lang 元素内容的语言代码,很少使用!

dir 语言方向,ltr,rtl 左到右,右到左、

每个元素都有一个或者多个特性,这些特性的用途是给出相应元素或内容的附加信息。可以通过属性访问到该属性对应的值,特性的名称是不区分大小写的,即"id""ID"表示相同的特性,另外需要注意的是,根据HTML5规范,自定义特性应该加上data-前缀,以便验证。

1)取得自定义属性

getAttribute() 参数为实际元素的属性名,calss,name,id,title,lang,dir一般只有在取得自定义特性值的情况下,才会用该方法大多数直接使用属性进行访问,比如style,onclick

2)设置属性

dom.className = "one"

dom.setAttribute("className","one");

setAttribute() 两个参数,第一个参数为要设置的特性名,第二个参数为对应的值。如果该值存在,替换。

3)移除属性

removeAttribute() 移除指定的特姓

4)attributes属性,其中包含了一个NamedNodeMap,与NodeList类似。

getNamedItem(name) 返回nodeName属性等于name的节点

removeNamedItem(name) 从列表中删除nodeName属性等于name的值

setNamedItem(node) 向列表中添加一个节点

item(pos) 返回位于数字pos位置处的节点

6)元素的子节点

<ul>

<li>item1</li>

<li>item2</li>

<li>item3</li>

</ul>

ie8及以下版本浏览器 3个子节点

其他浏览器 7个子节点

7)特殊特性

style

通过getAttribute()访问时,返回的style特性值中包含的是CSS文本,而通过属性来访问返回一个对象,由于style属性是用于以编程方式访问元素样式的,因此并没有直接映射到style特性

onclick类似的事件处理程序

通过getAttribute()访问时,返回相应代码字符串;访问onclick属性时,返回一个javascript函数

2. 作为文档树的文档

将文档看做是Element对象树,忽略文档Text,Comment节点。Element中的属性

children

类似于childNodes,返回NodeList对象,但是该对象中仅包含Element对象

firstElementChild

第一个孩子元素节点

lastElementChild

最后一个孩子元素节点

nextElementSibling

下一个兄弟元素节点

previousElementSibling

上一个兄弟元素节点

childElementCount

子元素的数量,返回值和children.length值相等

3. 元素内容

innerHTML 返回元素内容

textContent 非ie浏览器

innerText ie浏览器

4 Text类型: 文本类型

文本节点。包含的是可以按照字面解释的存文本内容。

length

文本长度

appendData(text)

追加文本

deleteData(beginIndex,count)

删除文本

insertData(beginIndex,text)

插入文本

replaceData(beginIndex,count,text)

替换文本

splitText(beiginIndex)

从beginIndex位置将当前文本节点分成两个文本节点

substringData(beiginIndex,count)

从beginIndex开始提取count个子字符串

<span>这个是文本节点</span>

document.createTextNode()

创建文本节点,参数为要插入节点中的文本

5 Comment类型: 注释类型

<div id = "myDiv"><!--a comment--></div>

<!--a comment--> Comment类型

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/09/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
DOM(文档对象模型)基础加强
DOM(文档对象模型)基础加强 文档:标记型文档 对象:封装了属性和行为的实例,可以直接被调用。 模型:所有的标记型文档都具有一些共性特征的一个体现。    用来将标记型文档封装成对象,并将标记型文档中的所有内容(标签、文本、属性)都封装成对象。    封装成对象的目的:是为了更方便的操作这些文档及其文档中的所有内容。因为对象包含属性和行为。 标记型文档包含标签、属性、标签中封装的数据。只要是标记型文档,DOM这种技术都可以对其进行操作。 常见的标记型文档包括:HTML、XML。 DOM要操作标记型
黑泽君
2018/10/11
9400
DOM(文档对象模型)基础加强
DOM--文档对象模型
DOM中文名文档对象模型,英文名Document Object Model,我们简称为DOM,是针对html和xml文档的一种API,将html以一种树状结构呈现出来,可以更直观去研究文档结构,我们将这种树状文档结构称为--DOM树,或者节点树,一样的概念
子舒
2022/06/09
1.4K0
DOM--文档对象模型
【JavaScript】之文档对象模型(DOM)详解
JavaScript 的强大之处在于它能够与 HTML 和 CSS 交互,动态地修改网页内容和样式。而实现这一功能的核心就是 DOM(文档对象模型)。
艾伦耶格尔
2025/08/28
1060
【JavaScript】之文档对象模型(DOM)详解
DOM操作
1.概述 1.1DOM DOM是JavaScript操作网页的接口,全称为“文档对象模型”(Document Object Model)。文档对象模型 (DOM) 是HTML和XML文档的编程接口。它给文档(结构树)提供了一个结构化的表述并且定义了一种方式—程序可以对结构树进行访问,以改变文档的结构,样式和内容。 浏览器会根据DOM模型,将结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口。所以,DOM可以理
小胖
2018/06/27
2.1K0
前端架构师之10_JavaScript_DOM
第1级DOM(DOM Level 1,或DOM1)。为XML和HTML文档中的元素、节点、属性等提供了必备的属性和方法。结合了Netscape及微软公司开发的DHTML(动态HTML)思想。
张哥编程
2024/12/13
4270
JavaScript DOM基础
DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口)。 一.DOM介绍 DOM中的三个字母,D(文档)可以理解为整个Web加载的网页文档;O(对象)可以理解为类似window对象之类的东西,可以调用属性和方法,这里我们说的是document对象;M(模型)可以理解为网页文档的树型结构。 DOM有三个等级,分别是DOM1、DOM2、DOM3,并且DOM1在1998年10月成为W3C标准。DOM1所支持的浏览器包括IE6+、Firefox、Safa
汤高
2018/01/11
1.5K0
DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口)。DOM描绘了一个层次变化的节点树,允许开发人员添加、移除和修改页面的某一部分。
奋飛
2019/08/15
1.7K0
前端day13-JS(WebApi)学习笔记(attribute语法、DOM节点操作)
小技巧:如果API写的是Emement复数的形式,也就是后面加了s(Emements)那么它返回的就是一个伪数组 否则就是单个对象,一般只有id才会是单个对象,其他方式获取(标签名 类名)都是伪数组.
帅的一麻皮
2020/04/19
3.2K0
前端day13-JS(WebApi)学习笔记(attribute语法、DOM节点操作)
JavaScript(十)
DOM(文档对象模型)是针对 HTML 和 XML 文档的一个 API。DOM 描绘了一个层次化的节点树,允许开发人员添加、移除和修改页面的某一部分。
1ess
2021/11/01
8350
DOM
DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口)。DOM描绘了一个层次变化的节点树,允许开发人员添加、移除和修改页面的某一部分。
奋飛
2021/08/30
1.7K0
DOM
DOM(文档对象模型):理解网页结构与内容操作的关键技术
DOM的编程接口由一组标准属性和方法定义。属性通常用于描述节点的特征,而方法通常用于执行与节点相关的操作。
小万哥
2024/03/29
2970
DOM(文档对象模型):理解网页结构与内容操作的关键技术
JS之文档对象模型DOM
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <title>History和Location使用</title> </head> <body> <input type="button" value="返回" onclick="history.back();" /> </body> </html> DOM 解析模型,将文档加载到 内存,形成一个树形结构 <html> 就是根节点,每个标签会成为
Java帮帮
2018/03/19
3.7K0
JS之文档对象模型DOM
JavaScript 编程精解 中文第三版 十四、文档对象模型
当你在浏览器中打开网页时,浏览器会接收网页的 HTML 文本并进行解析,其解析方式与第 11 章中介绍的解析器非常相似。浏览器构建文档结构的模型,并使用该模型在屏幕上绘制页面。
ApacheCN_飞龙
2022/12/01
1.7K0
JavaScript 编程精解 中文第三版 十四、文档对象模型
DOM 元素的循环遍历
get 方式获取的 dom 元素,仅可使用==for-in、for-of、for==循环
Krry
2020/06/10
7.2K0
前端温习(二): Javascriput 核心对象 Document 对象
在 HTML DOM (Document Object Model) 中 , 每一个元素都是 节点:
陈大剩博客
2023/02/17
9570
DOM 对象所有属性方法介绍,看这一篇就够了!
提示:Document 对象是 Window 对象的一部分,可通过 window.document 属性对其进行访问。
CODER-V
2023/03/04
1.4K0
前端基础-文档对象模型 (DOM)
DOM是JavaScript操作网页的接口,全称为“文档对象模型”(Document Object Model)。 它的作用是将网页转为一个JavaScript对象,从而可以用脚本进行各种操作(增删改查)。
cwl_java
2020/03/26
1.3K0
JavaScript 学习-28.元素与节点(HTMLCollection 和 NodeList)
前言 我们平常说的查找元素 和 节点到底有什么区别?为什么有时候返回HTMLCollection ,有时候返回NodeList? HTMLCollection 和  NodeList 的区别又是什么?带着这些问题进入本篇的学习。 节点与元素 根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点: 整个文档是一个文档节点 每个 HTML 元素是元素节点 HTML 元素内的文本是文本节点 每个 HTML 属性是属性节点 注释是注释节点 以下示例 <div id="user"> <
上海-悠悠
2022/05/30
2.2K0
JavaScript 学习-28.元素与节点(HTMLCollection 和 NodeList)
获取DOM节点的方法汇总
我们都知道,当获得所有节点(如:getElementsByTagName)或者获得所有子元素(如:element.childNodes)时,实际上返回的是包含一些DOM节点的集合,这个集合要么是 HTMLCollection,要么是 NodeList,两者其实都是类数组的对象。
Chor
2019/11/07
4.6K0
DOM中历史遗留的那些天坑 ...
即时到了DOM3.0时代, 为了同时满足浏览器的向下兼容和ES6的最新街口, DOM还是保留了很多古老的,极易和新类型引起混淆的类比如HTMLCollection vs. NodeList, 这篇文章
xosg
2018/10/14
1K1
DOM中历史遗留的那些天坑 ...
相关推荐
DOM(文档对象模型)基础加强
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档