DOM 树上的选择与遍历

选择器 API 提供了方法,可以根据一组 选择器 快速轻松地从 DOM 中检索 Element 节点。这比过去的技术要快得多,例如,过去需要使用 JavaScript 代码中的循环来查找您需要找到的特定项。

NodeSelector 接口

此规范向实现 DocumentDocumentFragmentElement 接口的任何对象添加了两个新方法

querySelector()

返回节点子树中第一个匹配的 Element 节点。如果没有找到匹配的节点,则返回 null

querySelectorAll()

返回一个包含节点子树中所有匹配的 Element 节点的 NodeList,如果没有找到匹配项,则返回一个空的 NodeList

注意: querySelectorAll() 返回的 NodeList 不是实时的,这意味着 DOM 的更改不会反映在该集合中。这与其他返回实时节点列表的 DOM 查询方法不同。

您可以通过阅读 Element.querySelector()Element.querySelectorAll() 方法的文档来查找示例和详细信息。

选择器

选择器方法接受 选择器 来确定应返回哪个或哪些元素。这包括 选择器列表,因此您可以在单个查询中组合多个选择器。

为了保护用户隐私,某些 伪类 不受支持或行为不同。例如,:visited 将不返回任何匹配项,而 :link 被视为 :any-link

只能选择元素,因此 伪类 不受支持。

示例

要选择文档中所有包含 warningnote 类的段落 (p) 元素,您可以执行以下操作

js
const special = document.querySelectorAll("p.warning, p.note");

您也可以按 ID 查询。例如

js
const el = document.querySelector("#main, #basic, #exclamation");

执行上述代码后,el 包含文档中 ID 为 mainbasicexclamation 的第一个元素。

另见