[javascript] doGetElementsByClassName (getElementsByClassName 가 정의되어 있지 않을 때 사용)

[javascript] doGetElementsByClassName (getElementsByClassName 가 정의되어 있지 않을 때 사용)

IE 버전이 낮은 경우 getElementsByClassName 가 정의되어 있지 않을 때가 있다.

이 때 getElementsByClassName 대신 doGetElementsByClassName 를 직접 구현하여 사용한다.

실제 IE 버전이 높아도, htm 페이지의 에뮬레이트 버전이 낮게 설정되어 있으면 해당 함수를 쓸 수 없다.

참고로 getElementsByClassName 는 IE 9.0 이상부터 지원한다.

// getElementsByClassName 가 정의되어 있지 않을 때 사용
function doGetElementsByClassName(_tagArr, _className) {
    if (_tagArr == null || _tagArr.length == 0) {
        return null;
    }
   
    if (_className == null || _className == “”) {
        return null;
    }
   
    _className = _className + “”;
   
    var resultArr = [];
   
    var tagCnt = _tagArr.length;
    for (var k=0; k<tagCnt; k++) {
        var strTagName = _tagArr[k];
        if (strTagName == null || strTagName == “”) {
            continue;
        }
       
        var elemArr = window.document.getElementsByTagName(strTagName);
        if (elemArr != null && elemArr.length > 0) {
            var elemCnt = elemArr.length;
            for (var i=0; i<elemCnt; i++) {
                if (elemArr[i] != null && elemArr[i].className == _className) {
                    resultArr[resultArr.length] = elemArr[i];
                }
            }
        }
    }
   
    return resultArr;
}

예를 들어 아래와 같이 사용한다.

var elems = null;
if (typeof(document.getElementsByClassName) != “undefined”) {
    elems = document.getElementsByClassName(“tempClassName”);
} else {
    var tagArr = [“iframe”, “div”];
    elems = doGetElementsByClassName(tagArr, “tempClassName”);

}