Rimuovere i bambini per classe non funziona in Internet Explorer
-
25-10-2019 - |
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.
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");