我有一个脚本( @briguy37帮助 使用Removechild删除具有同名的多个元素?)通过使用for loop和使用removeChild,可以用特定类名称删除所有元素。它在FF中完美工作,但在IE中,我会得到错误

Object doesnt support this property or method

该项目可以在以下查看: http://jsfiddle.net/u8xkg/31/

错误是指该行:

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

有任何想法吗?

谢谢。

有帮助吗?

解决方案

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

其他提示

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

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

如果您不使用项目中的任何框架(jQuery,Yui等),那么请自己帮个忙,至少包括在内 嘶哑的图书馆 这将CSS3选择器功能添加到任何浏览器中,但非常轻巧且快速。那会让你做:

var childNodesToRemove = Sizzle(".foo");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top