HTML DOM Document querySelectorAll() 方法
定义和用法
querySelectorAll()
方法返回与 CSS 选择器匹配的所有元素。
querySelectorAll()
方法返回的是 NodeList。
如果选择器无效,则 querySelectorAll()
方法会抛出 SYNTAX_ERR
异常。
实例
例子 1
选择所有带有 class="example" 的元素:
document.querySelectorAll(".example");
例子 2
为第一个 <p> 元素添加背景颜色:
const nodeList= document.querySelectorAll("p"); nodeList[0].style.backgroundColor = "red";
例子 3
为第一个 class="example" 的 <p> 元素添加背景颜色:
const nodeList = document.querySelectorAll("p.example"); nodeList[0].style.backgroundColor = "red";
例子 4
class="example" 的元素的数量:
let numb = document.querySelectorAll(".example").length;
例子 5
设置所有 class="example" 的元素的背景颜色:
const nodeList = document.querySelectorAll(".example"); for (let i = 0; i < nodeList.length; i++) { nodeList[i].style.backgroundColor = "red"; }
例子 6
设置所有 <p> 元素的背景颜色:
let nodeList = document.querySelectorAll("p"); for (let i = 0; i < nodeList.length; i++) { nodeList[i].style.backgroundColor = "red"; }
例子 7
设置所有使用 "target" 属性的 <a> 元素的边框:
const nodeList = document.querySelectorAll("a[target]"); for (let i = 0; i < nodeList.length; i++) { nodeList[i].style.border = "10px solid red"; }
例子 8
设置父元素是 <div> 元素的每个 <p> 元素的背景颜色:
const nodeList = document.querySelectorAll("div > p"); for (let i = 0; i < nodeList.length; i++) { nodeList[i].style.backgroundColor = "red"; }
例子 9
设置所有 <h3>、<div> 和 <span> 元素的背景颜色:
const nodeList = document.querySelectorAll("h3, div, span"); for (let i = 0; i < nodeList.length; i++) { nodeList[i].style.backgroundColor = "red"; }
语法
document.querySelectorAll(CSSselectors)
参数
参数 | 描述 |
---|---|
CSSselectors |
必需。一个或多个 CSS 选择器。 CSS 选择器根据 id、类、类型、属性、属性值等选择 HTML 元素。 如需完整列表,请访问我们的 CSS 选择器参考手册。 对于多个选择器,请用逗号分隔每个选择器(请参阅上方的实例)。 |
返回值
类型 | 描述 |
---|---|
对象 |
含有与 CSS 选择器匹配的元素的 NodeList 对象。 如果没有找到匹配项,则返回空的 NodeList 对象。 |
HTMLCollection 和 NodeList 的区别
NodeList 和 HTMLcollection 非常相似。
两者都是从文档中提取的节点(元素)的类似数组的集合(列表)。可以通过索引号(下标)访问节点。索引从 0 开始。
两者都有 length 属性,它返回列表(集合)中元素的数量。
HTMLCollection 是文档元素的集合。
NodeList 是文档节点(元素节点、属性节点和文本节点)的集合。
HTMLCollection 项目可以通过它们的名称、id 或索引号来访问。
NodeList 项目只能通过它们的索引号访问。
HTMLCollection 始终是实时的集合。
例如:如果将 <li> 元素添加到 DOM 中的列表,则 HTMLCollection 中的列表也会发生变化。
NodeList 通常是静态的集合。
例如:如果将 <li> 元素添加到 DOM 中的列表,则 NodeList 中的列表不会改变。
getElementsByClassName()
和 getElementsByTagName()
方法都返回实时 HTMLCollection。
querySelectorAll()
方法返回静态 NodeList。
childNodes
属性返回实时 NodeList。
浏览器支持
document.querySelectorAll()
是 DOM Level 3 (2004) 特性。
所有浏览器都支持它:
Chrome | IE | Edge | Firefox | Safari | Opera |
---|---|---|---|---|---|
Chrome | IE | Edge | Firefox | Safari | Opera |
支持 | 9-11 | 支持 | 支持 | 支持 | 支持 |
相关页面
教程:
QuerySelector 方法:
Document querySelectorAll() 方法