解决对象不支持“getElementsByClassName”属性或方法|解决对象不支持“getElementsByClassName”属性或方法 ie兼容性

解决 IE 或者兼容模式不支持 document.getElementsByClassName() 的方法 自已实现document.getElementsByClassName();

网页错误详细信息
消息: 对象不支持此属性或方法
document.getElementsByClassName('element_name')
需要自己实现下该方法,因为ie5之前的版本并不支持这个方法
有以下四种方法,第四种兼容性最好

一、
[javascript] view plaincopy

//create method getElementsByClassName for document if(!document.getElementsByClassName){ document.getElementsByClassName = function(className, element){ var children = (element || document).getElementsByTagName('*'); var elements = new Array(); for (var i=0; i

二、
function getElementsByClassName(oElm, strTagName, strClassName){ var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName); var arrReturnElements = new Array(); strClassName = strClassName.replace(/\-/g, "\\-"); var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)"); var oElement; for(var i=0; i < arrElements.length; i++){ oElement = arrElements[i]; if(oRegExp.test(oElement.className)){ arrReturnElements.push(oElement); } } return (arrReturnElements) }

三、
var getElementsByClass = function(searchClass,node,tag) { var classElements = new Array(); if ( node == null ) node = document; if ( tag == null ) tag = '*'; var els = node.getElementsByTagName(tag); var elsLen = els.length; var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"); for (i = 0, j = 0; i < elsLen; i++) { if ( pattern.test(els[i].className) ) { classElements[j] = els[i]; j++; } } return classElements; }

四、
var getElementsByClassName = function (searchClass, node,tag) { if(document.getElementsByClassName){ var nodes =(node || document).getElementsByClassName(searchClass),result = []; for(var i=0 ; node = nodes[i++]; ){ if(tag !== "*" && node.tagName === tag.toUpperCase()){ result.push(node) } } return result }else{ node = node || document; tag = tag || "*"; var classes = searchClass.split(" "), elements = (tag === "*" && node.all)? node.all : node.getElementsByTagName(tag), patterns = [], current, match; var i = classes.length; while(--i >= 0){ patterns.push(new RegExp("(^|\\s)" + classes[i] + "(\\s|$)")); } var j = elements.length; while(--j >= 0){ current = elements[j]; match = false; for(var k=0, kl=patterns.length; k

【解决对象不支持“getElementsByClassName”属性或方法|解决对象不支持“getElementsByClassName”属性或方法 ie兼容性】转载于:https://www.cnblogs.com/allforone/p/4184632.html

    推荐阅读