DOM | 青训营笔记

67 阅读3分钟

DOM | 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的的第5天
DOM是一种树形结构的数据结构

节点层次

DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的结构

Node类型

nodeName和nodeValue属性

这两个属性的值完全取决于节点的类型

节点关系

文档中所有的节点之间都存在这样或那样的关系
每个节点都有一个childNodes属性,其中保存着一个NodeList对象
每个节点都有一个parentNode属性,该属性指向文档树中的父节点
previousSibling和nextSibling属性,可以访问同一列表中的其他节点
父节点的firstChild和lastChild属性分别指向其childNodes列表中的第一个和最后一个节点
haschildNodes(),在节点包含一或多个子节点的情况下返回true

操作节点

appendChild(),用于向childNodes列表的末尾添加一个节点
insertBefore()方法,接受两个参数:要插入的节点和作为参照的节点。插入节点后,被插入的节点会变成参照节点的前一个同胞节点,同时被方法返回
replaceChild(),接受两个参数:要插入的节点和要替换的节点。要替换的节点将由这个方法返回并从文档树中被移除,同时由要插入的节点占据其位置
removeChild(),这个方法接受一个参数,即要移除的节点。被移除的节点将成为方法的返回值

其他方法

cloneNode(),用于创建调用这个方法的节点的一个完全相同的副本
normalize(),这个方法唯一的作用就是处理文档树中的文本节点

Document类型

文档的子节点

documentElement属性,该属性始终指向HTML页面中的<html>元素
body属性,直接指向<body>元素 DocumentType,指向<!DOCTYPE>

文档信息

title包含着<title>元素中的文本
URL属性中包含页面完整的URL
domain属性中只包含页面的域名
referrer属性中则保存着链接到当前页面的那个页面的URL

查找元素

getElementById(),接收一个参数:要取得的元素的ID
getElementByTagName(),这个方法接受一个参数,即要取得元素的标签名,而返回的是包含零或多个元素的NodeList

DOM一致性检测

hasFeature(),这个方法接受两个参数:要检测的DOM功能的名称及版本号。如果浏览器支持给定名称和版本的功能,则该方法返回true

文档写入

write() writeln() open() close()

Element类型

HTML元素

所有HTML元素都由HTMLElement类型表示

取得特性

getAttribute()
setAttribute() 这个方法接受两个参数:要设置的特性名和值
removeAttribute() 这个方法用于彻底删除元素的特性

创建元素

document.createElement()

Text类型

文本节点由Text类型表示,包含的是可以照字面解释的纯文本内容 document.createTextNode()创建新闻本节点,这个方法接受一个参数——要插入节点中的文本

Comment类型

注释在DOM中是通过Comment类型来表示的

DOM操作技术

动态脚本

创建动态脚本也有两种方式:插入外部文件和直接插入JavaScript代码

动态样式

动态样式是指在页面刚加载时不存在的样式;动态样式是在页面加载完成后动态添加到页面中

操作表格

使用NodeList

本文若有不足之处,欢迎纠正。