Element.toggleAttribute()
The toggleAttribute() method of the
Element interface toggles a Boolean attribute (removing it if it is
present and adding it if it is not present) on the given element.
Syntax
toggleAttribute(name);
toggleAttribute(name, force);
Parameters
name-
A
DOMStringspecifying the name of the attribute to be toggled. The attribute name is automatically converted to all lower-case whentoggleAttribute()is called on an HTML element in an HTML document. forceOptional-
A boolean value which has the following effects:
- if not specified at all, the
toggleAttributemethod "toggles" the attribute namedname— removing it if it is present, or else adding it if it is not present - if true, the
toggleAttributemethod adds an attribute namedname - if false, the
toggleAttributemethod removes the attribute namedname
- if not specified at all, the
Return value
true if attribute name is eventually
present, and false otherwise.
Exceptions
InvalidCharacterErrorDOMException-
The specified attribute
namecontains one or more characters which are not valid in attribute names.
Example
In the following example, toggleAttribute() is used to toggle the
disabled attribute of an <input>.
HTML
<input value="text">
<button>toggleAttribute("disabled")</button>
JavaScript
var button = document.querySelector("button");
var input = document.querySelector("input");
button.addEventListener("click", function(){
input.toggleAttribute("disabled");
});
Result
DOM methods dealing with element's attributes:
| Not namespace-aware, most commonly used methods | Namespace-aware variants (DOM Level 2) | DOM Level 1 methods for dealing with Attr nodes directly (seldom used) |
DOM Level 2 namespace-aware methods for dealing with Attr nodes directly (seldom used) |
|---|---|---|---|
setAttribute (DOM 1) |
setAttributeNS |
setAttributeNode |
setAttributeNodeNS |
getAttribute (DOM 1) |
getAttributeNS |
getAttributeNode |
getAttributeNodeNS |
hasAttribute (DOM 2) |
hasAttributeNS |
- | - |
removeAttribute (DOM 1) |
removeAttributeNS |
removeAttributeNode |
- |
Polyfill
if (!Element.prototype.toggleAttribute) {
Element.prototype.toggleAttribute = function(name, force) {
if(force !== void 0) force = !!force
if (this.hasAttribute(name)) {
if (force) return true;
this.removeAttribute(name);
return false;
}
if (force === false) return false;
this.setAttribute(name, "");
return true;
};
}
Specifications
| Specification |
|---|
| DOM Standard # ref-for-dom-element-toggleattribute① |
Browser compatibility
BCD tables only load in the browser