Bestimmen der Präsenz von Elementklassen in JavaScript
Bei der Überprüfung der Klassenattribute eines Elements ist es oft notwendig, zu überprüfen, ob es eine bestimmte Klasse enthält. Der bereitgestellte Code verwendet eine Switch-Anweisung, um den genauen Klassenwert eines Elements zu untersuchen, dieser Ansatz erkennt jedoch keine Teilübereinstimmungen.
Um diese Einschränkung zu beheben, sollten Sie die Verwendung der Methode element.classList .contains in Betracht ziehen. Diese Methode akzeptiert einen Klassennamen als Parameter und gibt einen booleschen Wert zurück, der sein Vorhandensein in der Klassenliste des Elements angibt:
element.classList.contains(class);
Diese Methode wird in allen modernen Systemen allgemein unterstützt Browsern und bietet eine konsistente Möglichkeit, die Klasseneinbindung zu überprüfen.
Alternativ können Sie zur Kompatibilität mit älteren Browsern, denen die .contains-Methode fehlt, Folgendes verwenden modifizierte Version der indexOf-Methode:
function hasClass(element, className) { return (' ' element.className ' ').indexOf(' ' className ' ') > -1; }
Diese Änderung stellt sicher, dass Sie Teilübereinstimmungen genau erkennen und Fehlalarme vermeiden, wenn die gesuchte Klasse Teil eines größeren Klassennamens ist.
Anwenden dieser Methode auf das bereitgestellte Beispiel:
var test = document.getElementById("test"), classes = ['class1', 'class2', 'class3', 'class4']; test.innerHTML = ""; for(var i = 0, j = classes.length; iDurch den Einsatz der .contains-Methode oder der modifizierten indexOf-Funktion können Sie zuverlässig bestimmen, ob ein Element eine bestimmte Klasse in JavaScript enthält, unabhängig von der Browserkompatibilität oder dem Vorhandensein teilweiser Übereinstimmungen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3