Did You Notice How You Overwrite the Class Name When You Add a New One?setAttribute vs classList



When working with JavaScript, adding classes to HTML elements is a common task. Two popular methods for doing this are setAttribute and classList.add. Understanding the difference between these methods is crucial for effectively managing classes in your HTML elements.

Using setAttribute

The setAttribute method is used to set the value of an attribute on an HTML element.

Basic Syntax of setAttribute

element.setAttribute('class', 'new-class');

This method overwrites any existing classes on the element with the new class specified.

Example Usage

const element = document.getElementById('myElement');
element.setAttribute('class', 'new-class');

In this example, any existing classes on the element with the ID myElement will be replaced with new-class.

Using classList.add

The classList.add method is used to add one or more classes to an element without removing existing classes.

Basic Syntax of classList.add


This method appends the new class to any existing classes on the element.

Example Usage

const element = document.getElementById('myElement');

In this example, new-class is added to the list of classes on the element with the ID myElement, preserving any existing classes.

Comparison and Summary

Here's a comparison table to summarize the key differences between setAttribute and classList.add:

Feature setAttribute classList.add
Purpose Sets the value of an attribute, potentially replacing all existing values. Adds one or more classes without removing existing ones.
Preservation of Existing Classes Does not preserve; replaces all classes. Preserves existing classes and adds new ones.
Usage Simplicity Simple for replacing all classes. Simple for adding new classes while preserving existing ones.

Conclusion and FAQs

Understanding when to use setAttribute and classList.add can help you better manage your HTML elements' classes. Use setAttribute when you need to replace all existing classes, and use classList.add when you want to add classes without affecting existing ones.


  • Q: Can I use setAttribute to add multiple classes?

    A: Yes, you can, but it will replace all existing classes with the new ones.

  • Q: What happens if the class I add with classList.add already exists?

    A: If the class already exists, classList.add will not add it again; it will simply ignore it.

Post a Comment

Post a Comment (0)
To Top