Web Dev Simplified Blog

Literally Everything You Need To Know About classList

November 30, 2020

If you have written any JavaScript then you have almost certainly used classList at least once. You may even think that classList is as simple as an add and remove method, but there is so much more to classList. In this article I want to show you everything that is possible with classList since it will make working with classes in JavaScript much easier.

The Basics

I of course need to mention the most basic usage of adding and removing classes. When you access the classList of an element you can use the add method to add a class and the remove method to remove a class. This is pretty straight forward, but most people don’t know that you can pass as many classes as you want to these methods and they will add/remove them all. You can also access the string of all classes by using the value property

element.classList.add("new-class", "another-class")
console.log(element.classList.value)
// new-class another-class

element.classList.remove("another-class")
console.log(element.classList.value)
// new-class

Contains

Sometimes you need to check to see if an element has a specific class in JavaScript in order to perform a certain operation. This is luckily very easy to do with classList. You can just call the contains method and pass the name of the class you want to check. This method will return true if the element has that class and false if it doesn’t.

console.log(element.classList.contains("new-class"))
// false

element.classList.add("new-class")
console.log(element.classList.contains("new-class"))
// true

Toggle

My favorite method of classList is the toggle method. This method lets you toggle a class on/off depending on if the class is already on the element.

element.classList.toggle("new-class")

The above is the same as the below.

if (element.classList.contains("new-class")) {
  element.classList.remove("new-class")
} else {
  element.classList.add("new-class")
}

This is not the only use of toggle, though. Sometimes you need to toggle a class based on a boolean value. For example if the boolean win is true then you want to add the win class to an element otherwise if win is false you want to remove the win class. Doing so is as simple as the below.

element.classList.toggle("win", win)

The above is the same as the below.

if (win) {
  element.classList.add("win")
} else {
  element.classList.remove("win")
}

ForEach

Sometimes you just want to loop through all the classes of an element to do some advanced checks. This is easy to do with the forEach method. The forEach method also works just like the array forEach method.

element.classList.add("one", "two")
element.classList.forEach(className => {
  console.log(className)
})
// one
// two

Replace

This method is a bit of an odd one, but can be useful in certain scenarios. The replace method takes two class names and will replace the first class name with the second class name only if the first class name is already on the element. This method will also return true if the replace was successful or false if the element does not contain the class to be replaced. Here is an example to showcase how this works.

element.classList.replace("one", "two")

This is the same as the following.

if (element.classList.contains("one")) {
  element.classList.remove("one")
  element.classList.add("two")
}

This method doesn’t have too many uses, but if you need to progress from one class to another, for example in a counter or multi-part form, then this would be the perfect use case.

Conclusion

That is everything you need to know about classList. Not all these methods will be used in every project you write, but knowing they exist will help you write cleaner and more maintainable code.