[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”);
}
|