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.lengthRead only- Is an
integerrepresenting the number of objects stored in the object. DOMTokenList.valueRead 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
trueif 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
trueif 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
iteratorallowing you to go through all key/value pairs contained in this object. DOMTokenList.forEach()- Executes a provided function once per
DOMTokenListelement. DOMTokenList.keys()- Returns an
iteratorallowing you to go through all keys of the key/value pairs contained in this object. DOMTokenList.values()- Returns an
iteratorallowing 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 extendsDOMTokenListwith settable .value property)