해결 대상이 'getelementsByClassName' 속성이나 방법 i 호환성을 지원하지 않습니다.

8736 단어 element

IE 해결 또는 호환 모드에서 문서가 지원되지 않습니다.getElementsByClassName () 방법


스스로 실현document.getElementsByClassName();
 
 
웹 페이지 오류 세부 정보 메시지: 대상이 이 속성이나 방법을 지원하지 않습니다
document.getElementsByClassName('element_name')
이 방법을 스스로 실현해야 한다. 왜냐하면 i5 이전 버전은 이 방법을 지원하지 않았기 때문이다.
다음 네 가지 방법이 있는데, 네 번째 호환성이 가장 좋다.
 
하나,
[javascript]  view plain copy
 
//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;  

        };  

    }  

 
2.
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;

    }

  }

좋은 웹페이지 즐겨찾기