How To Modify CSS Classes in JavaScript?
The practice of making changes to DOM elements by directly manipulating JavaScript and CSS is frowned upon. It's usually a sign that something has been coded poorly and that the code can be streamlined using one of the many perfectly good JavaScript libraries out there. The chances are that a certain pattern or piece of code for what you need already exists, but in the rare instance when it doesn't, CSS is still a perfectly valid option just as long as you wrap your methods inside of a conditional check to make sure nothing has gone wrong.
Also Check these Questions:
How to Get Class List of an Element with jQuery?
Cannot read property 'classList' of undefined
javascript classlist add
classname toggle js
document.getElementById('myButton').onclick = function() {
this.classList.toggle('active');
}
classList.toggle
classList.item(index); // Returns the item in the list by its index, or undefined if index is greater than or equal to the list's length
classList.contains(token); // Returns true if the list contains the given token, otherwise false.
classList.add(token1[, ...tokenN]); // Adds the specified token(s) to the list.
classList.remove(token1[, ...tokenN]); // Removes the specified token(s) from the list.
classList.replace(oldToken, newToken); // Replaces token with newToken.
classList.supports(token); // Returns true if a given token is in the associated attribute's supported tokens.
classList.toggle(token[, force]); // Removes token from the list if it exists, or adds token to the list if it doesn't. Returns a boolean indicating whether token is in the list after the operation.
classList.entries(); // Returns an iterator, allowing you to go through all key/value pairs contained in this object.
classList.forEach(callback[ ,thisArg]); // Executes a provided callback function once per DOMTokenList element.
classList.keys(); // Returns an iterator, allowing you to go through all keys of the key/value pairs contained in this object.
classList.values(); // Returns an iterator, allowing you to go through all values of the key/value pairs contained in this object.
css class list
var myElement = document.getElementById("myElementID");
myElement.classList.add("style1 style2");
myElement.classList.remove("style1 style2");
ClassList
const div = document.createElement('div');
div.className = 'foo';
// our starting state: <div class="foo"></div>
console.log(div.outerHTML);
// use the classList API to remove and add classes
div.classList.remove("foo");
div.classList.add("anotherclass");
// <div class="anotherclass"></div>
console.log(div.outerHTML);
// if visible is set remove it, otherwise add it
div.classList.toggle("visible");
// add/remove visible, depending on test conditional, i less than 10
div.classList.toggle("visible", i < 10 );
console.log(div.classList.contains("foo"));
// add or remove multiple classes
div.classList.add("foo", "bar", "baz");
div.classList.remove("foo", "bar", "baz");
// add or remove multiple classes using spread syntax
const cls = ["foo", "bar"];
div.classList.add(...cls);
div.classList.remove(...cls);
// replace class "foo" with class "bar"
div.classList.replace("foo", "bar");
JS classList
-- HTML --
<div class='container'></div>
-- JAVASCRIPT --
element.classList.contains('container'); // True or false
element.classList.add('my-class'); // Adds the class if it isn't present yet
element.classList.remove('my-class'); // Removes the class if it’s present
element.classList.toggle('my-class'); // Adds if not present, else removes
classlist
// use the classList API to remove and add classes
div.classList.remove("foo");
div.classList.add("anotherclass");
This means that any className added in JS leads to a new class being created, which is not what we want; this will actually cause classes to be removed.