Remove specific class from group of elements without jquery

后端 未结 3 2038
独厮守ぢ
独厮守ぢ 2020-12-22 12:57

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

相关标签:
3条回答
  • 2020-12-22 13:38

    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.

    0 讨论(0)
  • 2020-12-22 13:51

    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.

    0 讨论(0)
  • 2020-12-22 13:52

    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
    };
    <div class="header_content_lang">
      <span class="langNav">
            ...
        </span>
      <span class="langNav">
            ...
        </span>
      <span class="langNav activeLang">
            ...
        </span>
    </div>

    0 讨论(0)
提交回复
热议问题