Skip to content Skip to sidebar Skip to footer

Remove Specific Class From Group Of Elements Without Jquery

I have multiple span elements, I try to remove the class activeLang. How can I do this?
... <

Solution 1:

On modern, up-to-date browsers you can use forEach on the HTMLCollection (which inherits from NodeList) returned by querySelectorAll:

document.querySelectorAll(".activeLang").forEach(function(element) {
    element.classList.remove("activeLang");
});

On old browsers, you need to polyfill it, which you can do like this:

if (!NodeList.prototype.forEach) {
    Object.defineProperty(NodeList.prototype, "forEach", {
        value: Array.prototype.forEach
    });
}

You may also need a polyfill for classList.

On truly obsolete browsers (IE8), you'd have to polyfill Array.prototype.forEach (and classList) first.

Or use any of the "array-like" looping mechanism described in this answer.

Solution 2:

Remove . from the classname

el.classList.remove("activeLang");

window.onload = function() {

  var x = document.getElementsByClassName("activeLang");
  console.log(x[0]); //will print the object
  [].forEach.call(x, function(el) {
    el.classList.remove("activeLang");
  });
  console.log(x[0]); //will no longer print the object
};
<divclass="header_content_lang"><spanclass="langNav">
        ...
    </span><spanclass="langNav">
        ...
    </span><spanclass="langNav activeLang">
        ...
    </span></div>

Solution 3:

There are a couple of typos in your code: you're putting a dot in the name of the class activeLang and it's not necessary (in getElementsByClassName and remove).

Supposing you fixed the typo, you'd still get undefined in your console.log. The reason is due to two things:

  1. The length of the list is, at most, one (that would explain why x[1] and x[2] are undefined).
  2. getElementsByClassName returns a live HTMLCollection of found elements so, even though the list has one element before performing the remove of the class, the length will be zero when you actually remove it (therefore x[0] is undefined too).

Hope this clarifies things.

Post a Comment for "Remove Specific Class From Group Of Elements Without Jquery"