成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS實(shí)現(xiàn)博客前端頁(yè)面(一)—— 封裝基礎(chǔ)庫(kù)

UCloud / 1419人閱讀

摘要:創(chuàng)建基本庫(kù)首先創(chuàng)建一個(gè)基本庫(kù),名字叫做用于編寫最常用的代碼,然后不斷的擴(kuò)展封裝。

1、創(chuàng)建基本庫(kù)

首先創(chuàng)建一個(gè)基本庫(kù),名字叫做base.js,用于編寫最常用的代碼,然后不斷的擴(kuò)展封裝。
在最常用的代碼中,最常用的就是獲取節(jié)點(diǎn)的方法。這里我們可以編寫代碼如下:

//創(chuàng)建base.js
//整個(gè)庫(kù)可以是一個(gè)對(duì)象
var Base={
    //方法名盡可能簡(jiǎn)短而富有意義
    getId:function(id){
        return document.getElementById(id);
    },
    getName:function(name){
        return document.getElementsByName(name);
    },
    getTagName:function(tag){
        return document.getElementsByTagName(tag);
    }
}
//類方法調(diào)用
window.onload=function(){
    alert(Base.getId("box").innerHTML);
    alert(Base.getName("chk")[0].value);
    alert(Base.getTagName("p")[0].innerHTML);
};
2、實(shí)現(xiàn)連綴語(yǔ)法

即可以使用Base.getId("box").css("color","red").html("標(biāo)題").click(function(){alert("a")});類似的語(yǔ)句實(shí)現(xiàn)對(duì)象方法的連續(xù)調(diào)用
需要在步驟1的基礎(chǔ)上改寫庫(kù)對(duì)象:

//分析:想要實(shí)現(xiàn)連綴語(yǔ)法Base.getId("box").css("color","red").html("標(biāo)題").click(function(){alert("a")});
//需要在Base類中實(shí)現(xiàn)css(),html(),click()方法,且方法都要return一個(gè)Base對(duì)象
//在Base對(duì)象中,一般設(shè)置css,innnerHTML,onclick的方法如下
//var base=new Base();    new一個(gè)Base類的實(shí)例
//base.getId("box").style.color="red";   定義color
//base.getId("box").style.backgroundColor="red";
//base.getId("box").innerHTML="標(biāo)題";
//base.getId("box").onclick=function(){alert("a")};
//現(xiàn)在需要將上面的設(shè)置為Base類的css,html,click方法,

//定義$函數(shù),用于生成多個(gè)Base()實(shí)例對(duì)象,后面需要Base實(shí)例時(shí),直接使用$()即可
var $ = function(){
    return new Base();
};
function Base(){
    //使用this關(guān)鍵字創(chuàng)建elements數(shù)組,用來(lái)保存獲取目標(biāo)節(jié)點(diǎn)和節(jié)點(diǎn)數(shù)組
    this.elements=[];
    //使用this關(guān)鍵字定義獲取節(jié)點(diǎn)的方法
    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){
    //對(duì)指定節(jié)點(diǎn)元素設(shè)置屬性和值
    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;
};
//類方法調(diào)用
window.onload=function(){
     //每一個(gè)$()為一個(gè)對(duì)象實(shí)例,可調(diào)用類中封裝好的方法
    $().getId("box").css("color","red").html("title");
    $().getTagName("p").css("color","blue").html("標(biāo)題");
};
3、CSS的封裝 獲取行內(nèi)樣式

以上是通過(guò)html()方法和css()方法可以設(shè)置標(biāo)題內(nèi)容和CSS樣式,但現(xiàn)在如果想要通過(guò)這兩個(gè)方法獲取已將定義好的屬性值:類似于:$().getId("box").html(); $().getId("box").css();時(shí)是不滿足的,現(xiàn)在就需要重寫這兩個(gè)方法。

//分析:要實(shí)現(xiàn)方法既能設(shè)置傳入的參數(shù)值,返回Base對(duì)象,又能在傳入?yún)?shù)為null的情況下返回當(dāng)前屬性值,那只要判斷傳過(guò)來(lái)的參數(shù)即可:
//如果沒(méi)有傳參數(shù),則函數(shù)返回當(dāng)前屬性值,如果傳入?yún)?shù),則需要設(shè)置傳入的屬性值,并返回Base對(duì)象,重寫的代碼如下:
Base.prototype.css=function(attr,value){
    //對(duì)指定節(jié)點(diǎn)元素設(shè)置屬性和值
    for(var i in this.elements){
        //使用arguments數(shù)組對(duì)象獲取傳入的參數(shù),并判斷參數(shù)的個(gè)數(shù)
        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數(shù)組對(duì)象獲取傳入的參數(shù),并判斷參數(shù)的個(gè)數(shù)
        if(arguments.length==0){
            return this.elements[i].innerHTML;
        }
        this.elements[i].innerHTML=str;
    }
    return this;
};
//類方法調(diào)用
window.onload=function(){
     //每一個(gè)$()為一個(gè)對(duì)象實(shí)例,可調(diào)用類中封裝好的方法
    $().getId("box").css("color","red").html("title");
    //$().getTagName("p").css("color","blue").html("標(biāo)題");
    alert($().getId("box").html());
    alert($().getId("box").css("color"));
};
獲取外部CSS樣式

以上獲取的css樣式,僅是行內(nèi)的css,如果使用link鏈接的外部CSS,又該如何處理呢?
這里可以使用W3C 的window.getComputedStyle和IE的currentStyle來(lái)獲取,更改后的代碼如下:

Base.prototype.css=function(attr,value){
    //對(duì)指定節(jié)點(diǎn)元素設(shè)置屬性和值
    for(var i in this.elements){
        //使用arguments數(shù)組對(duì)象獲取傳入的參數(shù),并判斷參數(shù)的個(gè)數(shù)
        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;
}

以上內(nèi)容來(lái)自李炎恢老師JavaScript課程實(shí)戰(zhàn)篇筆記整理

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90920.html

相關(guān)文章

  • 前端相關(guān)大雜燴

    摘要:希望幫助更多的前端愛(ài)好者學(xué)習(xí)。前端開發(fā)者指南作者科迪林黎,由前端大師傾情贊助。翻譯最佳實(shí)踐譯者張捷滬江前端開發(fā)工程師當(dāng)你問(wèn)起有關(guān)與時(shí),老司機(jī)們首先就會(huì)告訴你其實(shí)是個(gè)沒(méi)有網(wǎng)絡(luò)請(qǐng)求功能的庫(kù)。 前端基礎(chǔ)面試題(JS部分) 前端基礎(chǔ)面試題(JS部分) 學(xué)習(xí) React.js 比你想象的要簡(jiǎn)單 原文地址:Learning React.js is easier than you think 原文作...

    fuyi501 評(píng)論0 收藏0
  • 個(gè)人分享--web前端學(xué)習(xí)資源分享

    摘要:前言月份開始出沒(méi)社區(qū),現(xiàn)在差不多月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過(guò)的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒(méi)社區(qū),現(xiàn)在差不多9月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...

    sherlock221 評(píng)論0 收藏0
  • 【單頁(yè)面博客前端到后端】基于 DVA+ANTD 搭建博客前后臺(tái)界面

    摘要:在的的配置中添加自定義主題由腳手架和官網(wǎng)介紹,我們已經(jīng)自己配置并新建好了主題文件。單頁(yè)面博客從前端到后端環(huán)境搭建單頁(yè)面博客從前端到后端基于搭建博客前后臺(tái)界面單頁(yè)面博客從前端到后端基于和的權(quán)限驗(yàn)證與的設(shè)計(jì) 在上篇文章我們已經(jīng)搭建好了基礎(chǔ)的開發(fā)環(huán)境,接下來(lái)會(huì)介紹如何引入 DVA 和 ANTD ,以及在引入過(guò)程中需要注意的問(wèn)題。這里只會(huì)詳細(xì)的書寫部分組件,其他的組件都是大同小異。你可以在 g...

    zqhxuyuan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<