Удалить детей из класса, не работающего в Internet Explorer - PullRequest
0 голосов
/ 25 июля 2011

У меня есть скрипт (помогает @ briguy37 Удалить несколько элементов с одинаковым именем, используя removeChild? ), который удаляет все элементы с определенным именем класса, используя цикл for и используя removeChild.Он отлично работает в FF, но в IE я получаю ошибку

Object doesnt support this property or method

Проект можно посмотреть по адресу: http://jsfiddle.net/U8xkg/31/

Ошибка относится к строке:

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

Есть идеи?

Спасибо.

Ответы [ 4 ]

2 голосов
/ 25 июля 2011
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;
}
2 голосов
/ 25 июля 2011

К сожалению, в IE нет метода getElementsByClassName.

0 голосов
/ 25 июля 2011

Если вы не используете какой-либо фреймворк в своем проекте (jQuery, YUI и т. Д.), Сделайте себе одолжение и увеличьте свою производительность, по крайней мере, включив библиотеку Sizzle , которая добавляетВозможности селектора CSS3 для любого браузера, но достаточно легкие и быстрые.Это позволит вам просто сделать:

var childNodesToRemove = Sizzle(".foo");
0 голосов
/ 25 июля 2011

проверьте, есть ли такой метод - getElementsByClassName.если нет, проверьте, поддерживается ли метод querySelectorAll.Если, опять же, нет, вам лучше использовать некоторую инфраструктуру для извлечения узлов.Особенно этот код предназначен для кросс-браузер.

...