Domanda

Ho uno script (aiutato da @ briguy37 Rimuovi più elementi con lo stesso nome utilizzando removeChild? ) che rimuove tutti gli elementi con un certo nome classe utilizzando un ciclo e l'utilizzo di removeChild. Il suo perfettamente funzionante in FF, ma in IE, ottengo l'errore

Object doesnt support this property or method

Il progetto può essere visionato a: http://jsfiddle.net/U8xkg/31/

L'errore si riferisce alla linea:

var childNodesToRemove = document.getElementById(parentId).getElementsByClassName('foo');

Tutte le idee?

Grazie.

È stato utile?

Soluzione

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;
}

Altri suggerimenti

Purtroppo non esiste un metodo getElementsByClassName in IE.

verificare se vi sia tale metodo - getElementsByClassName. se non, controllare se metodo querySelectorAll è supportato. Se, una volta, non è, è meglio utilizzare un quadro di riferimento per andare a prendere i nodi. Soprattutto questo codice è destinato ad essere cross-browser.

Se non si utilizza un quadro nel progetto (jQuery, YUI, ecc ...), poi fare la vostra auto un favore e aumentare la produttività di almeno compreso il Sizzle biblioteca che aggiunge funzionalità di selezione CSS3 per qualsiasi browser, ma è abbastanza leggero e veloce. Che vi permetterà di basta fare:

var childNodesToRemove = Sizzle(".foo");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top