hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

getElementsByClassNameを自作してみる

何気なく使ってしまっていた『tElementsByClassName』ですが、
Firefox3でしかサポートされていないようで、IEやFirefox2では使えなかったので、
自作してみました。

document.getElementsByClassName = ( 
    document.all ?
    function(classname, tagname){
        var element = "";
        if (arguments.length == 1) {
            element = document.all;
        }
        else{
            element = document.getElementsByTagName(tagname);
        }
        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;
    } :
    function(classname, tagname){
        if (arguments.length == 1) {
            tagname = "*";
        }
        var classElements = new Array();
        var element = document.getElementsByTagName(tagname);
        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;
    }
);