使用命名空间定义getElementsByClassName()函数

为了使模块间相互调用而不引起冲突,我们定义一些需要被其他模块使用的函数时要用命名空间来定义;

如我们需要一个通过类名来取得Dom节点集合的函数,我们希望将它定义在GLABAL.DOM下,我们可以用GLABAL.namespace()函数(参考我的另一篇博文,有专门介绍)来声明这个命名空间,GLABAL.namespace("Dom"),这样我们就声明了一个GLABAL.Dom命名空间,然后我们就使用它来定义getElementsByClassName()方法如下:

//通过类名获取元素节点集合函数getElementsByClassName()
GLOBAL.Dom.getElementsByClassName=function(str,root,tag){
    if(root){
        root=typeof root=="string" ? document.getElementById(root):root;    
    }else{
        root=document.body;    
    }
    tag=tag||"*";
    var els=root.getElementsByTagName(tag),arr=[];
    for(var i=0,n=els.length;i<n;i++){
        for(var j=0,k=els[i].className.split(" "),l=k.length;j<l;j++){
            if(k[j]==str){
            arr.push(els[i]);
            break;    
            }
        }
            
    }
    
    return arr;
    
}

当我们在其他函数模块中需要使用它的时候我们就可以直接调用GLABAL.Dom.getElementsByClassName()来使用它了。

posted on 2016-09-06 15:58  指尖的力量  阅读(295)  评论(0)    收藏  举报

导航