The DOMTokenList
interface represents a set of space-separated tokens. Such a set is returned by Element.classList
, HTMLLinkElement.relList
, HTMLAnchorElement.relList
or HTMLAreaElement.relList
. It is indexed beginning with 0
as with JavaScript Array
objects. DOMTokenList
is always case-sensitive.
Properties
DOMTokenList.length
Read only- Is an
integer
representing the number of objects stored in the object. DOMTokenList.value
Read only- Returns the value of the list as a
DOMString
.
Methods
DOMTokenList.item()
- Returns an item in the list by its index (returns undefined if the number is greater than or equal to the length of the list).
DOMTokenList.contains()
- Returns
true
if the list contains the given token, otherwisefalse
. DOMTokenList.add()
- Adds the given token to the list.
DOMTokenList.remove()
- Removes the specified token from the list.
DOMTokenList.replace()
- Replaces an existing token with a new token.
DOMTokenList.supports()
- Returns
true
if a given token is in the associated attribute's supported tokens. DOMTokenList.toggle()
- Removes a given token from the list and returns false. If token doesn't exist it's added and the function returns
true
. DOMTokenList.entries()
- Returns an
iterator
allowing you to go through all key/value pairs contained in this object. DOMTokenList.forEach()
- Executes a provided function once per
DOMTokenList
element. DOMTokenList.keys()
- Returns an
iterator
allowing you to go through all keys of the key/value pairs contained in this object. DOMTokenList.values()
- Returns an
iterator
allowing you to go through all values of the key/value pairs contained in this object.
Examples
In the following simple example we retrieve the list of classes set on a <span>
element as a DOMTokenList
using Element.classList
, add a class using DOMTokenList.add()
, and then update the Node.textContent
of the <span>
to equal the DOMTokenList
.
First, the HTML:
<p class="a b c"></p>
Now the JavaScript:
var para = document.querySelector("p"); var classes = para.classList; para.classList.add("d"); para.textContent = 'paragraph classList is "' + classes + '"';
The output looks like this:
Trimming of whitespace and removal of duplicates
Methods that modify the DOMTokenList
(such as DOMTokenList.add()
) automatically trim any excess whitespace and remove duplicate values from the list. For example:
<span class=" d d e f"></span>
var span = document.querySelector("span"); var classes = span.classList; span.classList.add("x"); span.textContent = 'span classList is "' + classes + '"';
The output looks like this:
Specifications
Specification | Status | Comment |
---|---|---|
Credential Management Level 1 | Editor's Draft | Adds the supports() method. |
DOM The definition of 'DOMTokenList' in that specification. |
Living Standard | Initial definition |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | 10 | (Yes) | (Yes) |
replace() |
61 | 49 (49) | ? | No support | (Yes) |
Iterable methods (entries() , keys() , forEach() , values() ) |
(Yes) | 50 (50) | ? | (Yes) | ? |
supports() |
50 | 49 (49) | No support | (Yes) | ? |
Remove whitespace and duplicates | (Yes) | 55 (55) | (Yes)[1] | (Yes) | (Yes) |
Feature | Android Webview | Chrome for Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | (Yes) | (Yes) | ? | (Yes) |
replace() |
? | No support | 49.0 (49) | ? | No support | (Yes) |
Iterable methods (entries() , keys() , forEach() , values() ) |
? | (Yes) | 50.0 (50) | ? | (Yes) | ? |
supports() |
50.0 | 50.0 | 49.0 (49) | No support | No support | No support |
Remove whitespace and duplicates | ? | (Yes) | 55.0 (55) | (Yes)[1] | (Yes) | (Yes) |
[1] IE only trims whitespace — it doesn't remove duplicates.
See Also
DOMSettableTokenList
(object that extendsDOMTokenList
with settable .value property)