按类无法在Internet Explorer中删除子项

时间:2011-07-25 14:00:29

标签: javascript removechild

我有一个脚本(由@ briguy37 Remove multiple elements with same name using 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 个答案:

答案 0 :(得分:2)

不幸的是,IE中没有getElementsByClassName方法。

答案 1 :(得分:2)

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 :(得分:0)

检查是否有这样的方法 - getElementsByClassName。 如果没有,请检查是否支持querySelectorAll方法。 如果,再一次,不是,你应该更好地使用一些框架来获取节点。 特别是此代码旨在跨浏览器。

答案 3 :(得分:0)

如果您没有在项目中使用任何框架(jQuery,YUI等等),那么请至少包括添加CSS3选择器功能的Sizzle library,帮助您自己帮助提高工作效率任何浏览器,但是非常轻巧和快速。那会让你这么做:

var childNodesToRemove = Sizzle(".foo");