Js根据ADS.js写的类库

跟ADS.js一样 类似默写 加深对类库开发的理解

(function(){
    
    //IORI命名空间 Advanced DOM Scripting   
    if(!window.IORI){
        window.IORI={};
    }
    
    //确定浏览器是否与整个库兼容   
    //例子 alert(ADS.getEvent());   
    function isCompatible(other){   
        if(other===false  
        ||!Array.prototype.push   
        ||!Object.hasOwnProperty   
        ||!document.createElement   
        ||!document.getElementsByTagName   
        ){   
            return false;   
        }   
        return true;   
    }   
    IORI.isCompatible=isCompatible;   
    //使用if(IORI.isCompatible)
    
    //根据id获取元素、元素组
    function $(){
        var elements = new Array();
        for(var i=0; i<arguments.length; i++){
            var element = arguments[i];
            if(typeof element == 'string'){
                element = document.getElementById(element);
                
                if(arguments.length == 1){
                    return element;
                }
                elements.push(element);
            }        
        }    
        
        return elements;    
    }
    IORI.$=$;    
    //使用IORI.$('t1','t2')
    
    //添加事件   
    //例子IORI.addEvent(window,'load',test6);   
    //    IORI.addEvent(window,'load',test5);   
    //可以为一个对象添加多个事件  
    function addEvent(node,type,listener){
        if(!IORI.isCompatible){return false;}
        if(!(node=$(node))) {return false;}
        
        if(node.addEventListener){
            //W3C的方法   
            node.addEventListener(type,listener,false);
            return true;
        }
        else if(node.attachEvent){
                //MS IE的方法 
                node.attachEvent('on'+type,listener)
                /*node['e'+type_]=listener;   
                node[type_]=function()   
                {                  
                    node['e'+type_](window.event);   
                }              
                node.attachEvent('on'+type_,node[type_]);  */
                return true;
        }
        
        //若两种方法都不具备   
        return false; 
    }
    IORI.addEvent = addEvent;
    
    //删除事件   
    //例子 IORI.removeEvent(window,'load',test6);  
    function removeEvent(node,type,listener){
        if(!(node=$(node))){return false;}    
        
        if(node.removeEventListener){
             //W3C的方法 
            node.removeEventListener(type,listener,false);
            return true;
        }
        else if(node.detachEvent){
            node.detachEvent('on'+type,listener);
            return true;    
        }
        
        return false;
    }
    IORI.removeEvent = removeEvent;
    
    //依据className 查找元素(集合)   
    //例子 ADS.getElementsByClassName("className","*",document);   
    //返回 数组   
    function getElementsByClassName(className,tag,parent){   
        parent=parent||document;   
        if(!(parent=$(parent))){return false;}   
           
        //查找所有匹配的标签   
        var allTags=(tag=="*"&&parent.all)?parent.all:parent.getElementsByTagName(tag);   
        var matchingElements=new Array();   
           
        //创建一个正则表达示   
        className=className.replace(/\-/g,"\\-");   
        var regex=new RegExp("(^|\\s)"+className+"(\\s|$)");   
           
        var element;   
        for(var i=0;i<allTags.length;i++)   
        {   
            element=allTags[i];   
            if(regex.test(element.className)){   
                matchingElements.push(element);   
            }   
        }   
        return matchingElements;   
    }   
    IORI.getElementsByClassName=getElementsByClassName; 
        
    //反复隐显   
    //例子 IORI.toggleDisplay('id');   
    //    IORI.toggleDisplay('id','block');  
    function toggleDisplay(node,value){
        if(!(node=$(node))){return false;}
        
        if(node.style.display != 'none'){
            node.style.display = 'none';
        }
        else{
            node.style.display = value||'';    
        }
    }
    IORI.toggleDisplay = toggleDisplay;
    
    //在指定元素后面插入一个元素   
    //IORI.insertAfter("bu1","bu8")    
    function insertAfter(node,referenceNode){
        if(!(node=$(node))){return false;}
        if(!(referenceNode=$(referenceNode))){return false;}
        referenceNode.parentNode.insertBefore(node,referenceNode.nextSibling);
    }
    IORI.insertAfter = insertAfter;
    
    //给指定节点添加子节点,  添加在已有子节点的前面  
    function prependChild(parent,node){
        if(!(parent=$(parent))){return false;}
        if(!(node=$(node))){return false;}
        if(parent.hasChildNodes()){
            parent.insertBefore(node,parent.firstChild);
        }
        else{
            parent.appendChild(node);
        }
    }
    IORI.prependChild = prependChild;
    
    //删除元素的子元素
    function removeAllChild(parent){
        if(!(parent=$(parent))){return false;}
        /*while(parent.hasChildNodes()){
            parent.removeChild(parent.firstChild);
        }*/
        
        /*while(parent.firstChild){
            parent.removeChild(parent.firstChild);
        }*/
        
        while(parent.firstChild){
            parent.firstChild.parentNode.removeChild(parent.firstChild);
        }
    }
    IORI.removeAllChild = removeAllChild;
    
})(window)

 

posted @ 2012-05-08 21:37  sidihu  阅读(193)  评论(0编辑  收藏  举报