ie不支持getElementsByClassName的解决办法

时间:2022-04-27 10:13:47

目前可以这么解决,判断浏览器支不支持这个方法,如果支持就不管;如果不支持,就在document对象里加入getElementsByClassName这个方法,按兴趣的朋友可以了解下

if (navigator.appName == 'Microsoft Internet Explorer') {
document.getElementsByClassName = function() {
var tTagName = "*";
if (arguments.length > 1) {
tTagName = arguments[1];
}
if (arguments.length > 2) {
var pObj = arguments[2]
} else {
var pObj = document;
}
var objArr = pObj.getElementsByTagName(tTagName);
var tRObj = new Array();
for ( var i = 0; i < objArr.length; i++) {
if (objArr[i].className == arguments[0]) {
tRObj.push(objArr[i]);
}
}
return tRObj;
}
}
function getElementsByClassName(className,tagName) {
tagName=tagName||"*"; //参数tagName可以不写。
if (document.getElementsByClassName) { //如果浏览器支持getElementsByClassName就直接用
return getElementsByClassName(className);
}else {
var tag= document.getElementsByTagName(tagName); //获取指定元素
var tagAll = []; //用于存储符合条件的元素
for (var i = 0; i < tag.length; i++) { //遍历获得的元素
for(var j=0,n=tag[i].className.split(' ');j<n.length;j++){ //遍历此元素中所有class的值,如果包含指定的类名,就赋值给tagnameAll
if(n[j]==className){
tagAll.push(tag[i]);
break;
}
}
}
return tagAll;
}
}