Suche…


Klasse hinzufügen

Moderne Browser bieten ein classList Objekt, um die Bearbeitung des Klassenattributs des Elements zu erleichtern. Ältere Browser erfordern eine direkte Bearbeitung der className des Elements.

W3C DOM 4

Eine einfache Methode zum Hinzufügen einer Klasse zu einem Element besteht darin, diese an das Ende der className Eigenschaft className . Dies verhindert nicht, dass doppelte Klassennamen vorhanden sind. Zwischen den Klassennamen müssen Leerzeichen stehen.

document.getElementById("link1").className += " foo";
document.getElementById("link2").className += " foo bar";

Bei mehreren Elementen müssen Sie die Klassennamen in einer Schleife hinzufügen

var els = document.getElementsByClassName("foo"),
  indx = els.length;
while (indx--) {
  els[indx].className += " bar baz";
}
W3C DOM 4

Ein einzelner Klassenname kann als Zeichenfolge hinzugefügt werden. Um mehrere Klassennamen hinzuzufügen, verwenden Sie den Spread-Operator von ES6:

document.querySelector("#link1").classList.add("foo");
document.querySelector("#link2").classList.add(...['foo', 'bar']);

Bei mehreren Elementen müssen Sie die Klassennamen in einer Schleife hinzufügen

document.querySelectorAll(".foo").forEach(el => {
  el.classList.add(...['bar', 'baz']);
});

Klasse entfernen

Moderne Browser bieten ein classList Objekt, um die Bearbeitung des Klassenattributs des Elements zu erleichtern. Ältere Browser erfordern eine direkte Bearbeitung der className des Elements.

* Hinweis Klassennamen werden nicht in einer bestimmten Reihenfolge in der Eigenschaft des Elements gespeichert

W3C DOM 4

Wenn Sie eine Klasse aus einem Element entfernen, müssen Sie die className ein wenig className .

var toRemove = "bar",
  el = document.getElementById("link1");
el.className = el.className.replace(new RegExp("\\b" + toRemove + "\\b", "g"), "").trim();

Das Entfernen mehrerer Klassennamen würde eine Schleife erfordern. Die restlichen Beispiele verwenden eine Funktion, um die Arbeit zu isolieren

function removeClass(el, name) {
  name = name.split(/\s+/);
  var index = name.length,
    classes = el.className;
  while (index--) {
    classes = classes.replace(new RegExp("\\b" + name[index] + "\\b", "g"), "").trim();
  }
  el.className = classes;
}
var el = document.getElementById("link1");
removeClass(el, "bar baz");

Mehrere Elemente mit mehreren zu entfernenden Klassennamen würden zwei Schleifen erfordern

function removeClass(els, name) {
  name = name.split(/\s+/);
  var regex, len,
    index = name.length;
  while (index--) {
    regex = new RegExp("\\b" + name[index] + "\\b", "g");
    len = els.length;
    while (len--) {
      els[len].className = els[len].className.replace(regex, "").trim();
    }
  }
}
var els = document.getElementsByTagName("a");
removeClass(els, "bar baz");
W3C DOM 4

Ein einzelner Klassenname kann als Zeichenfolge entfernt werden. Um mehrere Klassennamen zu entfernen, verwenden Sie den Spread-Operator von ES6:

document.querySelector("#link1").classList.remove("foo");
document.querySelector("#link2").classList.remove(...['foo', 'bar']);

Bei mehreren Elementen müssen Sie die Klassennamen in einer Schleife entfernen

document.querySelectorAll(".foo").forEach(el => {
  el.classList.remove(...['bar', 'baz']);
});

Test für eine Klasse

Moderne Browser bieten ein classList Objekt, um die Bearbeitung des Klassenattributs des Elements zu erleichtern. Ältere Browser erfordern eine direkte Bearbeitung der className des Elements.

* Hinweis Klassennamen werden nicht in einer bestimmten Reihenfolge in der Eigenschaft des Elements gespeichert

W3C DOM 4

className ob ein Element eine Klasse enthält, muss die className ein wenig className . In diesem Beispiel wird eine Array-Methode verwendet, um die Klasse zu testen.

function hasClass(el, name) {
  var classes = (el && el.className || "").split(/\s+/);
  return classes.indexOf(name) > -1;
}
var el = document.getElementById("link1");
console.log(hasClass(el, "foo"));

Das Testen auf mehrere Klassennamen würde eine Schleife erfordern.

function hasClass(el, name) {
  name = name.split(/[\s.]+/);
  var hasClass = true,
    classes = (el && el.className || "").split(/\s+/),
    index = name.length;
  while (index--) {
    hasClass = hasClass && classes.indexOf(name[index]) > -1;
  }
  return hasClass;
}
var el = document.getElementById("link1");
console.log(hasClass(el, "foo"));

Anstelle von .indexOf() können Sie auch einen regulären Ausdruck verwenden.

function hasClass(el, name) {
  return new RegExp("\\b" + name+ "\\b").test(el.className);
}
var el = document.getElementById("link1");
console.log(hasClass(el, "foo"));
W3C DOM 4

Das Testen eines einzelnen Klassennamens wird wie folgt durchgeführt:

var hasClass = document.querySelector("#link1").classList.contains("foo");

Bei mehreren Klassennamen ist es einfacher, matches zu verwenden. Beachten Sie die Verwendung der Klassenauswahl. Der Selektor kann ein beliebiger gültiger String-Selektor sein (ID, Attribut, Pseudoklassen usw.).

var hasClass = document.querySelector("#link1").matches('.foo.bar');
var hasClass = document.querySelector("#link2").matches('a.bar[href]');


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow