The Selectors API provides methods that make it quick and easy to retrieve Element
nodes from the DOM by matching against a set of selectors. This is much faster than past techniques, wherein it was necessary to, for example, use a loop in JavaScript code to locate the specific items you needed to find.
This specification adds two new methods to any objects implementing the Document
, DocumentFragment
, or Element
interfaces:
querySelector()
-
Returns the first matching Element
node within the node's subtree. If no matching node is found, null
is returned.
querySelectorAll()
-
Returns a NodeList
containing all matching Element
nodes within the node's subtree, or an empty NodeList
if no matches are found.
Note: The NodeList
returned by querySelectorAll()
is not live, which means that changes in the DOM are not reflected in the collection. This is different from other DOM querying methods that return live node lists.
You may find examples and details by reading the documentation for the Element.querySelector()
and Element.querySelectorAll()
methods.
The selector methods accept selectors to determine what element or elements should be returned. This includes selector lists so you can group multiple selectors in a single query.
To protect the user's privacy, some pseudo-classes are not supported or behave differently. For example :visited
will return no matches and :link
is treated as :any-link
.
Only elements can be selected, so pseudo-classes are not supported.
To select all paragraph (p
) elements in a document whose classes include warning
or note
, you can do the following:
const special = document.querySelectorAll("p.warning, p.note");
You can also query by ID. For example:
const el = document.querySelector("#main, #basic, #exclamation");
After executing the above code, el
contains the first element in the document whose ID is one of main
, basic
, or exclamation
.