亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JS實現(xiàn)博客前端頁面(一)—— 封裝基礎庫

UCloud / 1467人閱讀

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

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

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

//創(chuàng)建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);
    }
}
//類方法調(diào)用
window.onload=function(){
    alert(Base.getId("box").innerHTML);
    alert(Base.getName("chk")[0].value);
    alert(Base.getTagName("p")[0].innerHTML);
};
2、實現(xiàn)連綴語法

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

//分析:想要實現(xiàn)連綴語法Base.getId("box").css("color","red").html("標題").click(function(){alert("a")});
//需要在Base類中實現(xiàn)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")};
//現(xiàn)在需要將上面的設置為Base類的css,html,click方法,

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

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

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

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

Base.prototype.css=function(attr,value){
    //對指定節(jié)點元素設置屬性和值
    for(var i in this.elements){
        //使用arguments數(shù)組對象獲取傳入的參數(shù),并判斷參數(shù)的個數(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)容來自李炎恢老師JavaScript課程實戰(zhàn)篇筆記整理

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/90920.html

相關文章

  • 前端相關大雜燴

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

    fuyi501 評論0 收藏0
  • 個人分享--web前端學習資源分享

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

    sherlock221 評論0 收藏0
  • 【單頁面博客前端到后端】基于 DVA+ANTD 搭建博客前后臺界面

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

    zqhxuyuan 評論0 收藏0

發(fā)表評論

0條評論

UCloud

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<