getElementsByClassNameを自作してみる パート2
以前、getElementsByClassNameを自作してみましたが、少し作りを変えてみました。
前の作りだと、コードが冗長化されてしまっていたので、一部の処理を共通化してみました。
/*********************************************** * クラス名、タグ名で指定されたElementを取得 ***********************************************/ var getElementsByClassName = (function(classname, tagname){ //共通となる処理をfunctionにする var regClass = function(element, classname){ var classElements = new Array(); var regexe = new RegExp("\\b" + classname + "\\b"); for( i = 0; i < element.length; i++ ) { if( regexe.exec(element[i].className) ) { classElements.push(element[i]); } } return classElements; } //IEの場合 if( document.all ){ return function(classname, tagname){ if (arguments.length == 1) { element = document.all; } else{ element = document.getElementsByTagName(tagname); } return regClass(element,classname); }; } //IE以外の場合 else{ return function(classname, tagname){ if (arguments.length == 1) { tagname = "*"; } var element = document.getElementsByTagName(tagname); return regClass(element,classname); }; } })();