首页 > 代码库 > 解决对象不支持“getElementsByClassName”属性或方法 ie兼容性

解决对象不支持“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<children.length; i++){                  var child = children[i];                  var classNames = child.className.split(‘ ‘);                  for (var j=0; j<classNames.length; j++){                      if (classNames[j] == className){                           elements.push(child);                          break;                      }                  }              }               return elements;          };      }  

 

  二、

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<kl; k++){          match = patterns[k].test(current.className);          if (!match)  break;        }        if (match)  result.push(current);      }      return result;    }  }

 

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