尝试使用 document.getElementsByClassName 获取具有特定类的元素数组时,IE 遇到兼容性问题。 IE 不直接支持此方法。
Jonathan Snook 的方法:
使用 Jonathan Snook 的 getElementsByClassName 函数(该函数基于正则表达式匹配来查找元素)可能会导致IE 中的错误。这是因为该函数未定义为文档的方法。
解决方案:
为了使该函数兼容 IE,应将其作为单独的函数调用不参考文档:
function getElementsByClassName(node, classname) { var a = []; var re = new RegExp('(^| )'+classname+'( |$)'); var els = node.getElementsByTagName("*"); for(var i=0,j=els.length; i<j; i++) if(re.test(els[i].className))a.push(els[i]); return a; } var tabs = getElementsByClassName(document.body,'tab');
IE8兼容性:
对于 IE8 及更高版本,可以使用替代方法:
if(!document.getElementsByClassName) { document.getElementsByClassName = function(className) { return this.querySelectorAll("." + className); }; Element.prototype.getElementsByClassName = document.getElementsByClassName; } var tabs = document.getElementsByClassName('tab');
此方法利用 IE8 中支持的 querySelectorAll 方法,该方法的操作与 getElementsByClassName 类似。
以上是如何在 Internet Explorer 中使用'document.getElementsByClassName”?的详细内容。更多信息请关注PHP中文网其他相关文章!