JS完成博客前端页面(一)—— 封装基本库

1、建立基础库

起首建立一个基础库,名字叫做base.js,用于编写最经常运用的代码,然后不停的扩大封装。
在最经常运用的代码中,最经常运用的就是猎取节点的要领。这里我们能够编写代码以下:

//建立base.js
//全部库能够是一个对象
var Base={
    //要领名尽量简短而富有意义
    getId:function(id){
        return document.getElementById(id);
    },
    getName:function(name){
        return document.getElementsByName(name);
    },
    getTagName:function(tag){
        return document.getElementsByTagName(tag);
    }
}
//类要领挪用
window.onload=function(){
    alert(Base.getId('box').innerHTML);
    alert(Base.getName('chk')[0].value);
    alert(Base.getTagName('p')[0].innerHTML);
};

2、完成联缀语法

即能够运用Base.getId(‘box’).css(‘color’,’red’).html(‘题目’).click(function(){alert(‘a’)});相似的语句完成对象要领的一连挪用
须要在步骤1的基础上改写库对象:

//剖析:想要完成联缀语法Base.getId('box').css('color','red').html('题目').click(function(){alert('a')});
//须要在Base类中完成css(),html(),click()要领,且要领都要return一个Base对象
//在Base对象中,平常设置css,innnerHTML,onclick的要领以下
//var base=new Base();    new一个Base类的实例
//base.getId('box').style.color='red';   定义color
//base.getId('box').style.backgroundColor='red';
//base.getId('box').innerHTML='题目';
//base.getId('box').onclick=function(){alert('a')};
//如今须要将上面的设置为Base类的css,html,click要领,

//定义$函数,用于天生多个Base()实例对象,背面须要Base实例时,直接运用$()即可
var $ = function(){
    return new Base();
};
function Base(){
    //运用this关键字建立elements数组,用来保留猎取目的节点和节点数组
    this.elements=[];
    //运用this关键字定义猎取节点的要领
    this.getId=function(id){
        var e=document.getElementById(id);
        this.elements.push(e);
        return this;
    }
    this.getTagName=function(tag){
        var e=document.getElementsByTagName(tag);
        for(var i in e){
            this.elements.push(e[i]);
        }
        return this;
    }
}
//也能够运用prototy增加Base的原型要领
Base.prototype.css=function(attr,value){
    //对指定节点元素设置属性和值
    for(var i in this.elements){
        this.elements[i].style[attr]=value;
    }
    return this;
}
Base.prototype.html=function(str){
    for(var i in this.elements){
        this.elements[i].innerHTML=str;
    }
    return this;
};
//类要领挪用
window.onload=function(){
     //每个$()为一个对象实例,可挪用类中封装好的要领
    $().getId('box').css("color","red").html("title");
    $().getTagName('p').css("color","blue").html("题目");
};

3、CSS的封装

猎取行内款式

以上是经由过程html()要领和css()要领能够设置题目内容和CSS款式,但如今假如想要经由过程这两个要领猎取已将定义好的属性值:相似于:$().getId(‘box’).html(); $().getId(‘box’).css();时是不满足的,如今就须要重写这两个要领。

//剖析:要完成要领既能设置传入的参数值,返回Base对象,又能在传入参数为null的情况下返回当前属性值,那只需推断传过来的参数即可:
//假如没有传参数,则函数返回当前属性值,假如传入参数,则须要设置传入的属性值,并返回Base对象,重写的代码以下:
Base.prototype.css=function(attr,value){
    //对指定节点元素设置属性和值
    for(var i in this.elements){
        //运用arguments数组对象猎取传入的参数,并推断参数的个数
        if(arguments.length==1){
            return this.elements[i].style[attr];
        }
        this.elements[i].style[attr]=value;
    }
    return this;
}
Base.prototype.html=function(str){
    for(var i in this.elements){
        //运用arguments数组对象猎取传入的参数,并推断参数的个数
        if(arguments.length==0){
            return this.elements[i].innerHTML;
        }
        this.elements[i].innerHTML=str;
    }
    return this;
};
//类要领挪用
window.onload=function(){
     //每个$()为一个对象实例,可挪用类中封装好的要领
    $().getId('box').css("color","red").html("title");
    //$().getTagName('p').css("color","blue").html("题目");
    alert($().getId('box').html());
    alert($().getId('box').css("color"));
};

猎取外部CSS款式

以上猎取的css款式,仅是行内的css,假如运用link链接的外部CSS,又该怎样处置惩罚呢?
这里能够运用W3C 的window.getComputedStyle和IE的currentStyle来猎取,变动后的代码以下:

Base.prototype.css=function(attr,value){
    //对指定节点元素设置属性和值
    for(var i in this.elements){
        //运用arguments数组对象猎取传入的参数,并推断参数的个数
        if(arguments.length==1){
            if(typeof window.getComputedStyle != 'undefined'){//W3C
                return window.getComputedStyle(this.elements[i],null)[attr];
            }else if(typeof this.elements[i].currentStyle != 'undefined'){//IE
                return this.elements[i].currentStyle[attr];
            }
        }
        this.elements[i].style[attr]=value;
    }
    return this;
}

以上内容来自李炎恢先生JavaScript课程实战篇笔记整顿

    原文作者:tf桑奎岚
    原文地址: https://segmentfault.com/a/1190000006856650
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞