JS原生練習(xí)(一)

83個(gè)js原生代碼實(shí)例,從易到難,涵蓋js算法和幾乎開發(fā)中用到的知識(shí)點(diǎn)(實(shí)時(shí)更新中)

實(shí)例中也包括了很多布局例如:flex布局和gird布局。

github地址?github.com/laihuamin/jsExample

項(xiàng)目展示地址laihuamin.github.io/jsExample/

(親自做,對(duì)js的熟練度絕對(duì)的加深,有心的給個(gè)star,謝謝。)

第一課

第一個(gè) ?控制DIV屬性

說一下代碼實(shí)現(xiàn)邏輯

用的是點(diǎn)擊事件來實(shí)現(xiàn)的。

循環(huán)邏輯,五個(gè)按鈕五個(gè)點(diǎn)擊事件具有很多的相似之處,這樣可以減少代碼量。

判斷邏輯,因?yàn)橹刂冒粹o需要清空之前的style,這里用if語句也可以,但是比較繁瑣,所以我采用了與門操作符,好處就是代碼量比較少。

第二個(gè) 網(wǎng)頁換膚

首先先來說幾個(gè)注意點(diǎn),再來說代碼邏輯

1、筆者用的是button,遵循JS語義化原則,使人更容易理解。但是得先設(shè)置box-sizing:content-box問題,不然按鈕的寬高無法正常顯示

2、筆者這里用了flex布局,簡單方便。推薦這篇文章

http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

代碼邏輯

通過點(diǎn)擊事件來實(shí)現(xiàn),實(shí)現(xiàn)過程主要由一下兩點(diǎn)

1、改變引入的css文件

2、改變按鈕的class,添加一個(gè)active樣式。(注:active筆者設(shè)置了import屬性)

第三個(gè) 函數(shù)接收參數(shù)并彈出

代碼邏輯

采用點(diǎn)擊事件,獲取值后將其傳個(gè)函數(shù)

第四個(gè) 用循環(huán)將三個(gè)Div變成紅色

亮點(diǎn)

使用flex布局。

代碼邏輯

運(yùn)用點(diǎn)擊事件,當(dāng)點(diǎn)擊之后,利用循環(huán)改變背景顏色


第五個(gè) 鼠標(biāo)移入改變樣式,鼠標(biāo)移出恢復(fù)

代碼邏輯

用鼠標(biāo)經(jīng)過事件和鼠標(biāo)移出事件。當(dāng)鼠標(biāo)移入是,改變div的style,移出是將style置為空。

第六個(gè) 記住密碼提示框

代碼邏輯

鼠標(biāo)經(jīng)過顯示內(nèi)容,鼠標(biāo)移出內(nèi)容隱藏

第二課

第一個(gè) 百度輸入法

代碼邏輯

點(diǎn)擊事件控制導(dǎo)航欄的下拉,但是需要加一個(gè)if的判斷,判斷ul塊的display屬性。

第二個(gè) 點(diǎn)擊Div,顯示其innerHTML

代碼邏輯

利用點(diǎn)擊事件彈框p元素的innerHTML內(nèi)容。這個(gè)實(shí)例,主要幫助理解innerHTML。

第三個(gè) ?求出數(shù)組中所有數(shù)字的和

代碼邏輯

利用點(diǎn)擊事件,然后取得input的value值。

取得的是字符串類型,用split把字符串切成一個(gè)一個(gè)字符串。

在用Number逐個(gè)進(jìn)行轉(zhuǎn)換,最后累加起來取得和,在輸出給另一個(gè)div塊

第四個(gè)? 彈出層效果

代碼邏輯

利用點(diǎn)擊事件,控制兩個(gè)div塊的display。

第五個(gè)? 函數(shù)傳參,改變Div任意屬性的值

代碼邏輯

利用點(diǎn)擊事件將參數(shù)傳遞給change函數(shù),改變屬性值。

在利用點(diǎn)擊事件,將style中的css清除掉。

第六個(gè) ?圖片列表:鼠標(biāo)移入/移出改變圖片透明度

布局

采用flex布局,(筆者越來越喜歡這個(gè)布局,感覺沒有float那么繁瑣,用起來十分方便)

代碼邏輯

采用鼠標(biāo)經(jīng)過事件和鼠標(biāo)移出事件改變其style屬性。

第七個(gè)? 簡易選項(xiàng)卡

代碼邏輯

利用鼠標(biāo)經(jīng)過事件改變內(nèi)容塊的display屬性,以及本身的背景色。

注意兩個(gè)點(diǎn):

1、改變內(nèi)容塊時(shí),筆者用了索引,因?yàn)閕的不能被引用。

2、在賦值之前,要將所以style重置之后在進(jìn)行。

第八個(gè)? 簡易JS年歷

布局還是采用flex布局

代碼邏輯

利用循環(huán)和鼠標(biāo)經(jīng)過事件改變內(nèi)容塊里面的內(nèi)容。

第九個(gè)? 單一按鈕顯示/隱藏一播放列表收縮展開

代碼邏輯

利用點(diǎn)擊事件,設(shè)定一個(gè)判斷標(biāo)準(zhǔn),比如筆者用了show,這個(gè)vue里面也有類似用到。

第十個(gè)? 提示框效果

布局

采用flex布局

代碼邏輯

利用的是循環(huán)和鼠標(biāo)經(jīng)過事件,以及鼠標(biāo)移出事件,來改變圖片的display屬性。

第十一個(gè)? 鼠標(biāo)移過,修改圖片路徑

布局

采用grid布局,第一次用,覺得挺不錯(cuò)的 blog.csdn.net/hj7jay/article/details/70670467

推薦這個(gè)教程,挺完善的

代碼邏輯

采用鼠標(biāo)經(jīng)過事件,切換圖片的src屬性,筆者用到了正則,減少代碼量。

筆者還加了圖片的懶加載判斷,用的是一張gif的動(dòng)圖

第十二個(gè)? 復(fù)選框(checkbox)全選/全不選/返選

代碼邏輯

for循環(huán)判斷每一個(gè)復(fù)選項(xiàng)框是不是被選中。

當(dāng)不被選中時(shí),checked為false,在js的與操作符中當(dāng)前一項(xiàng)為false時(shí),后一項(xiàng)不被執(zhí)行。

當(dāng)循環(huán)執(zhí)行完,判斷被選中的數(shù)量是不是等于復(fù)選項(xiàng)框的數(shù)量。

當(dāng)數(shù)量相等時(shí),把全選按鈕的check的值賦為true。

當(dāng)全選項(xiàng)框?yàn)閠rue時(shí),innerHTML的值為“全不選”,反之,則為“全選”。

接下去就是全選和全不選,以及反選的邏輯。都是利用循環(huán),邏輯比較簡單,不加以贅述。

第三課

第一個(gè)? 用typeof查看數(shù)據(jù)類型

代碼邏輯,用typoof判斷數(shù)據(jù)類型。

第二個(gè)? 用parseInt解析數(shù)字,并求和

代碼邏輯

利用點(diǎn)擊事件,累加兩個(gè)input的值(經(jīng)過parseInt()轉(zhuǎn)換)。再講值賦給res

在添加兩個(gè)句柄,判斷input的值為空時(shí),將res切換回?。

第三個(gè)? 累加按鈕,自加1

代碼邏輯

點(diǎn)擊事件,使得n的數(shù)值自動(dòng)累加,然后賦值給button。

第四個(gè)? 輸入兩個(gè)數(shù)字,比較大小

代碼邏輯

利用點(diǎn)擊事件,判別兩個(gè)值的大小,然后用正則選取內(nèi)容,改變button的innerHTML的屬性值。

第五個(gè)? 頁面加載后累加,自加1

代碼邏輯

利用setInterval設(shè)置定時(shí)觸發(fā)函數(shù),然后給innerHTML的內(nèi)容賦值。

第六個(gè)? 判斷數(shù)字是否為幾位數(shù)

代碼邏輯

先對(duì)input輸入框采用松開按鍵事件,判斷輸入為什么,把所有除數(shù)字以外的置為空。

然后在判斷input的value值的長度,來判斷是幾位數(shù)。

第七個(gè) ?簡易計(jì)算器

m.itdecent.cn/p/d847e5739cb7

第八個(gè) ?簡易時(shí)鐘

代碼邏輯

先定義一個(gè)函數(shù),用來獲取幾點(diǎn)幾分幾秒,然后在用setTnterval定時(shí)器來事實(shí)更新dom

正則的作用是當(dāng)時(shí)間是各位數(shù)的時(shí)候在他前面加個(gè)0,使其變成兩位數(shù)。

簡易時(shí)鐘

第九個(gè)? 簡易倒計(jì)時(shí)時(shí)鐘

代碼邏輯

定義一個(gè)函數(shù),將時(shí)間換算成分秒形式,然后在讓值遞減,使其完成計(jì)時(shí)功能。

計(jì)時(shí)器
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容