How to dynamically change CSS class of DIV tag?

You can add a css class based on id dynamically as follows:

document.getElementById('idOfElement').className = 'newClassName';

or using classList

document.getElementById('idOfElement').classList.add('newClassName');

Alternatively you can use other DOM methods like

  • querySelector
  • querySelectorAll
  • getElementsByClassName
  • getElementsByTagName

etc to find elements. The last three return a collection so you'll have to iterate over it and apply the class to each element in the collection.


In your case

var element = document.getElementById('div1');
if(boolVal)
   element.className= 'blueClass'; // += ' blueClass'; to keep existing classes
else
   element.className= 'redClass';

First of all, AddClass is not a pure Javascript method. It's related to jQuery.

You can use Javascript for adding a class:

setAttribute and className both method are used to set class (class attribute), these method are not used to adding another class with existing one.

document.getElementById('div1').setAttribute( "class", "blueClass" );

OR

document.getElementById('div1').className="redClass";

Demo Fiddle

So if you want append a css class to an element, you can do it like this -

 document.getElementById('div1').setAttribute( "class", document.getElementById('div1').getAttribute('class') + " blueClass" );

OR

 document.getElementById('div1').className +=" redClass";

Note: Using this way, the same class can be added multiple times. It's only a trick to do this work using javascript, it's not a perfect solution

OR simply use jQuery to add class -

$("#div1").addClass("blueClass");

Working Fiddle

Tags:

Javascript

Css