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.

War es hilfreich?

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");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top