我有一个脚本(由@ 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');
有什么想法吗?
感谢。
答案 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");