getElementsByClassName() Kompatibilität mit IE
Frage: So rufen Sie effektiv ein Array von Elementen mit einer bestimmten Klasse ab , unter Berücksichtigung der IE-Kompatibilität Einschränkungen?
Antwort:
Document.getElementsByClassName() ist eine moderne Methode, die vom IE nicht unterstützt wird. Erwägen Sie stattdessen die folgenden Ansätze:
Benutzerdefinierte Funktion (IE6):
Definieren Sie eine benutzerdefinierte Funktion, um getElementsByClassName() zu emulieren. Dazu gehört das Durchlaufen des DOM und das Testen der Klassennamen der Elemente anhand eines bereitgestellten Klassennamens:
<code class="js">function getElementsByClassName(node, className) { var a = []; var re = new RegExp('(^| )' + className + '( |$)'); var els = node.getElementsByTagName('*'); for (var i = 0, j = els.length; i < j; i++) if (re.test(els[i].className)) a.push(els[i]); return a; } // Usage: var tabs = getElementsByClassName(document.body, 'tab');</code>
querySelectorAll (IE8):
Wenn die Unterstützung von IE8 oder höher ausreichend ist Erweitern Sie die Dokument- und Elementobjekte, um querySelectorAll() zu unterstützen:
<code class="js">if (!document.getElementsByClassName) { document.getElementsByClassName = function (className) { return this.querySelectorAll('.' + className); }; Element.prototype.getElementsByClassName = document.getElementsByClassName; } // Usage: var tabs = document.getElementsByClassName('tab');</code>
Stellen Sie sicher, dass Sie aufrufen getElementsByClassName() mit dem gewünschten Knoten als erstes Argument, da es sich nicht um eine Dokumentmethode handelt. Durch die Implementierung einer dieser Lösungen können Sie Elemente nach Klassennamen abrufen und so die Kompatibilität mit einer größeren Auswahl an Browsern, einschließlich IE, gewährleisten.
Das obige ist der detaillierte Inhalt vonWie rufe ich Elemente nach Klassennamen im Internet Explorer ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!