0

我有一个脚本(由@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

4 回答 4

2

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

于 2011-07-25T14:03:41.310 回答
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;
}
于 2011-07-25T14:23:52.377 回答
0

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

于 2011-07-25T14:04:13.360 回答
0

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

var childNodesToRemove = Sizzle(".foo");
于 2011-07-25T15:00:00.023 回答