javascriptdom-manipulation

How to add a class to a given element?


I have an element that already has a class:

<div class="someclass">
    <img ... id="image1" name="image1" />
</div>

Now, I want to create a JavaScript function that will add a class to the div (not replace, but add).

How can I do that?


Solution

  • If you're only targeting modern browsers:

    Use element.classList.add to add a class:

    element.classList.add("my-class");
    

    And element.classList.remove to remove a class:

    element.classList.remove("my-class");
    

    If you need to support Internet Explorer 9 or lower:

    Add a space plus the name of your new class to the className property of the element. First, put an id on the element so you can easily get a reference.

    <div id="div1" class="someclass">
        <img ... id="image1" name="image1" />
    </div>
    

    Then

    var d = document.getElementById("div1");
    d.className += " otherclass";
    

    Note the space before otherclass. It's important to include the space otherwise it compromises existing classes that come before it in the class list.

    See also element.className on MDN.