javascript document.getElementsByClassName 与 IE 的兼容性 [英] javascript document.getElementsByClassName compatibility with IE
本文介绍了javascript document.getElementsByClassName 与 IE 的兼容性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我会使用 document.getElementsByClassName 但 IE 不支持它.
I would use document.getElementsByClassName but IE does not support it.
所以我尝试了Jonathan Snook 的解决方案:
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 = document.getElementsByClassName(document.body,'tab');
...但 IE 仍然说:
...but IE still says:
对象不支持此属性或方法
Object doesn't support this property or method
任何想法、更好的方法、错误修复?
Any ideas, better methods, bug fixes?
我不想使用任何涉及 jQuery 或其他大型 javascript"的解决方案.
I would prefer not to use any solutions involving jQuery or other "bulky javascript".
我开始工作了!
正如 @joe 提到的,该函数不是 document
的方法.
As @joe mentioned the function is not a method of document
.
所以工作代码看起来像这样:
So the working code would look like this:
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+ 支持,那么这将起作用:
if(!document.getElementsByClassName) {
document.getElementsByClassName = function(className) {
return this.querySelectorAll("." + className);
};
Element.prototype.getElementsByClassName = document.getElementsByClassName;
}
像往常一样使用它:
var tabs = document.getElementsByClassName('tab');
推荐答案
不是文档的方法:
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;
}
tabs = getElementsByClassName(document.body,'tab'); // no document
这篇关于javascript document.getElementsByClassName 与 IE 的兼容性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文