Entfernen Sie Kinder durch den Unterricht, der nicht im Internet Explorer arbeitet
-
25-10-2019 - |
Frage
Ich habe ein Skript (unterstützt von @Briguy37 Entfernen Sie mehrere Elemente mit demselben Namen mit Removechild?) Dadurch wird alle Elemente mit einem bestimmten Klassennamen durch Verwendung einer für Schleife und Removechild entfernt. Es funktioniert perfekt in FF, aber in IE bekomme ich den Fehler
Object doesnt support this property or method
Das Projekt kann angesehen werden unter: http://jsfiddle.net/u8xkg/31/
Der Fehler bezieht sich auf die Zeile:
var childNodesToRemove = document.getElementById(parentId).getElementsByClassName('foo');
Irgendwelche Ideen?
Vielen Dank.
Lösung
document.getElementsByClassName = function(class_name)
{
var all = this.getElementsByTagName('*');
var matchArray = new Array();
var re = new RegExp("(?:^|\\s)" + class_name + "(?:\\s|$)");
for (var i = 0, l = all.length; i < l; i++)
{
if (re.test(all[i].className))
matchArray.push(all[i]);
}
return matchArray;
}
Andere Tipps
Leider gibt es keine Methode GetElements byclassName in IE.
Überprüfen Sie, ob es eine solche Methode gibt - getElementsByClassName
. Wenn nicht, überprüfen Sie, ob querySelectorAll
Methode wird unterstützt. Wenn Sie noch einmal, nicht, sollten Sie ein Framework besser verwenden, um Knoten zu holen. Insbesondere dieser Code soll Cross-Browser sein.
Wenn Sie in Ihrem Projekt kein Framework verwenden (JQuery, Yui usw.), dann tun Sie sich selbst einen Gefallen und erhöhen Brutzelbibliothek Dies fügt jedem Browser CSS3 -Selektorfunktionen hinzu, ist jedoch ziemlich leicht und schnell. Das lässt Sie nur tun:
var childNodesToRemove = Sizzle(".foo");