Web/API/DOMTokenList/replace

From Get docs

The replace() method of the DOMTokenList interface replaces an existing token with a new token. If the first token doesn't exist, replace() returns false immediately, without adding the new token to the token list.

Syntax

tokenList.replace(oldToken, newToken);

Parameters

oldToken
A DOMString representing the token you want to replace.
newToken
A DOMString representing the token you want to replace oldToken with.

Return value

A boolean value, which is true if oldToken was successfully replaced, or false if not.

Note: In older browsers, replace() returns void.


Examples

In the following example we retrieve the list of classes set on a <span> element as a DOMTokenList using Element.classList. We then replace a token in the list, and write the list into the <span>'s Node.textContent.

First, the HTML:

<span class="a b c"></span>

Now the JavaScript:

let span = document.querySelector("span");
let classes = span.classList;

let result = classes.replace("c", "z");
console.log(result);

if (result) {
  span.textContent = classes;
} else {
  span.textContent = 'token not replaced successfully';
}

The output looks like this:

Polyfill

The following polyfill will add the replace method to the DOMTokenList class.  The following code will only work with IE10-11. To use with earlier versions of IE, refer to the polyfill at element.classList#Polyfill

DOMTokenList.prototype.replace = function (a, b) {
    if (this.contains(a)) {
        this.add(b);
        this.remove(a);
        return true;
    }
    return false;
}

Specifications

Specification Status Comment
DOMThe definition of 'replace()' in that specification. Living Standard Initial definition

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
replace Chrome

Full support 61

Edge

Full support 17

Firefox

Full support 49

IE

No support No

Opera

Full support 48

Safari

Full support 10.1

WebView Android

Full support 61

Chrome Android

Full support 61

Firefox Android

Full support 49

Opera Android

Full support 45

Safari iOS

Full support 10.3

Samsung Internet Android

Full support 8.0

return()'s value is a boolean, not void as it used to be. Chrome

Full support 67

Edge

Full support 18

Firefox

Full support 61

IE

No support No

Opera

Full support 54

Safari

Full support 12

WebView Android

Full support 67

Chrome Android

Full support 67

Firefox Android

Full support 61

Opera Android

Full support 48

Safari iOS

Full support 12

Samsung Internet Android

Full support 9.0

Legend

Full support  
Full support
No support  
No support