David Y.
—How can I add one or more additional classes to an HTML element that already has a class defined? For example, I want to transform this:
<p class="article-content" id="target"> This is the first paragraph of my article. </p>
Into this:
<p class="article-content highlighted" id="target"> This is the first paragraph of my article. </p>
The preferred way to do this in modern JavaScript is by using the add()
method on the element’s classList
property. For example, using the HTML p
element defined above:
const myParagraph = document.getElementById("target"); myParagraph.classList.add("highlighted");
To undo this change, we can use the remove
method:
myParagraph.classList.remove("highlighted");
Note that if the class to be removed is not present in the element’s classList
, this method will do nothing.
An alternative, more brittle method for achieving this is by directly editing className
, which contains the string assigned to the element’s class
attribute. We could do this as follows:
myParagraph.className += " highlighted"
Note that we’ve placed a space in front of our additional class to separate it from the element’s existing classes.
Using className
like this does not allow us to easily remove classes as we can with classList
. This approach was more common in older versions of JavaScript, before classList
was introduced, and should be avoided in modern code.
Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.
SEE EPISODESConsidered “not bad” by 4 million developers and more than 100,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.