遍历、导航

#document      document
|__html        document.documentElement
   |__head     document.head
   |__body     document.body

![[Pasted image 20240426142132.png|500]]

DOM 元素为“空”用 null 表示

子节点

elem.childNodes

返回 elem 的子节点集合,类型是 NodeList

firstChild 和 lastChild 属性是访问第一个和最后一个 childNodes 的快捷方式:

elem.childNodes[0] === elem.firstChild
elem.childNodes[elem.childNodes.length - 1] === elem.lastChild

elem.children

返回 elem 的子元素集合,类型是 HTMLCollection

firstElementChild 和 lastElementChild 属性是访问第一个和最后一个 children 的快捷方式:

elem.children[0] === elem.firstElementChild
elem.children[elem.children.length - 1] === elem.lastElementChild

兄弟节点

父节点

两者基本相同,因为父节点一般都是元素,除了:

document.documentElement.parentNode // document
document.documentElement.parentElement // null
// document 不是 Element

特殊元素

某些类型的 DOM 元素可能会提供特定于其类型的其他属性。

表格(table)

<table>

<thead><tfoot><tbody>

<tr>

<td><th>

表单(form)

#todo

搜索

getElement*

document.getElementById

如果一个元素有 id 特性(attribute),就可以使用 document.getElementById(id) 方法获取该元素。

注意:

getElementsBy*

注意:

elem.querySelector*

注意:

其他

elem.matches(css)

检查 elem 是否与给定的 CSS 选择器匹配,返回 boolean

elem.closest(css)

查找与 CSS 选择器匹配的最近的祖先节点,elem 自己也会被搜索