TaskHTML has <button id='b'>toggle</button> and <div id='card' class='card'>Hello</div>. CSS makes .card { padding: 12px } and .card.active { background: gold }. JS: clicking the button toggles 'active' on #card.
classList: toggle classes the modern way
75 XP6 min
Theory
classList β the cleanest DOM API in the standard library
el.classList.add("active");
el.classList.remove("active");
el.classList.toggle("active"); // adds if missing, removes if present β returns new state
el.classList.contains("active"); // β true / false
el.classList.replace("old", "new");Every method takes one or more class names. toggle accepts a force boolean too: toggle("active", isOn).
Why classList beats element.className
el.className = "card active"; // wipes everything else
el.className += " active"; // string-concat, easy to typo a missing space
el.classList.add("active"); // surgical, idempotentclassName is a string. Mutating it is fragile. classList knows it's a list and acts accordingly.
Combine with CSS for the visual state
A typical pattern:
.dialog { display: none; }
.dialog.open { display: block; }dialog.classList.toggle("open");State lives in one place: the class. CSS handles the visuals. JS handles the toggle. Each layer does what it's best at.
π
Sign up to start coding
Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β card required, cancel anytime.
Sign up β free trial βFirst 10 lessons in each track are free. No card needed for those.