How to add a class to an HTML element with JavaScript

David Y.
jump to solution

The Problem

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 Solution

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.

Considered "not bad" by 4 million developers and more than 150,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.

Sentry