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)

 

你可能感兴趣的:(js)