Pregunta

Tengo un script (ayudado por @briguy37 ¿Eliminar múltiples elementos con el mismo nombre usando RemoVeChild?) que elimina todos los elementos con un determinado nombre de clase usando un bucle for y usando RemoVeChild. Está funcionando perfectamente en FF, pero en IE, recibo el error

Object doesnt support this property or method

El proyecto se puede ver en: http://jsfiddle.net/u8xkg/31/

El error se refiere a la línea:

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

¿Algunas ideas?

Gracias.

¿Fue útil?

Solución

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

Otros consejos

Desafortunadamente, no hay método GetElementsByClassName en IE.

Compruebe si existe tal método - getElementsByClassName. Si no, verifique si querySelectorAll El método es compatible. Si, una vez más, no, debería usar mejor un marco para obtener nodos. Especialmente este código está destinado a ser navegador cruzado.

Si no está utilizando ningún marco en su proyecto (jQuery, yui, etc ...), entonces hágase un favor y aumente su productividad al menos, incluida la inclusión del Biblioteca de chisporroteo Eso agrega capacidades del selector CSS3 a cualquier navegador, pero es bastante liviano y rápido. Eso te dejará hacer:

var childNodesToRemove = Sizzle(".foo");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top