原生js編寫基于面向?qū)ο蟮姆猪摻M件
本文實(shí)例為大家分享了一個(gè)基于面向?qū)ο蟮姆猪摻M件的具體實(shí)現(xiàn)代碼,供大家參考,具體內(nèi)容如下
文字表達(dá)有限,直接上代碼了
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>一個(gè)基于面向?qū)ο蟮姆猪摻M件</title> <style> html,body{padding:0;margin:0;} p{padding:0;margin:0;} a{text-decoration: none} .Paging{overflow: hidden;} .Paging-item{float: left;padding: 10px 15px;background: #4caf50;color: #fff;margin-left: 5px;} .Paging-item-active{background: #ff568e;} </style> </head> <body> <div id="page"></div> </body> <script> //分頁組件類 function Paging(container,opt){ //自定義事件 this.eventHandlers={}; //默認(rèn)設(shè)置 this.config={ nowNum: 1, allNum: 10, callback: function(){} } if(opt){ this.extend(this.config,opt); } //外層容器 this.Box= null; //渲染組件 this.render(container); } Paging.prototype={ constructor: Paging, /*綁定自定義事件*/ on: function(eventType,eventHandler){ if(typeof this.eventHandlers[eventType] === 'undefined'){ this.eventHandlers[eventType]= []; } this.eventHandlers[eventType].push(eventHandler); }, /*觸發(fā)自定義事件*/ fire: function(eventType){ if( this.eventHandlers[eventType] instanceof Array){ var len= this.eventHandlers[eventType].length; for(var i=0;i<len;i++){ this.eventHandlers[eventType][i](); } } }, /*渲染UI結(jié)構(gòu)*/ renderUI: function(){ this.Box= document.createElement('div'); this.Box.className= 'Paging'; var nowNum= this.config.nowNum; var allNum= this.config.allNum; //當(dāng)前頁大于或等于4,第一頁才能隱藏,總數(shù)大于5才能顯示首頁 if (nowNum >=4 && allNum >=6) { var pageA= document.createElement('a'); pageA.className= 'Paging-item Paging-item-start' pageA.href='#1'; pageA.innerHTML= '首頁'; this.Box.appendChild(pageA); }; //當(dāng)前頁只要不是第一頁就顯示上一頁 if(nowNum>=2){ var pageA= document.createElement('a'); pageA.className= 'Paging-item Paging-item-pre' pageA.href='#'+ (nowNum-1); pageA.innerHTML= '上一頁'; this.Box.appendChild(pageA); } //只有5頁時(shí) if(allNum<=5){ for(var i=1;i<=allNum;i++){ var pageA= document.createElement('a'); pageA.className= 'Paging-item' pageA.href= '#'+ i; if(nowNum==i){ pageA.className= 'Paging-item Paging-item-active' pageA.innerHTML=i; }else{ // pageA.innerHTML='['+ i +']'; pageA.innerHTML=i; } this.Box.appendChild(pageA); } }else{ for(var i=1;i<=5;i++){ var pageA= document.createElement('a'); pageA.className= 'Paging-item' pageA.href= '#'+ (nowNum-3+i); //對(duì)當(dāng)前頁為前2頁的處理 if(nowNum === 1 || nowNum === 2){ pageA.href= '#'+ i; if(nowNum === i){ pageA.className= 'Paging-item Paging-item-active' pageA.innerHTML= i; }else{ // pageA.innerHTML= '['+i+']'; pageA.innerHTML= i; } }/*對(duì)當(dāng)前頁為后2頁的處理*/else if((allNum-nowNum) ===0 || (allNum-nowNum) === 1){ /*== <a href="">[6]</a> <a href="">[7]</a> <a href="">[8]</a> <a href="">[9]</a> <a href="">10</a> ==*/ pageA.href= '#'+ ((allNum-5)+i); if((allNum-nowNum) ===0 && i===5){ pageA.className= 'Paging-item Paging-item-active' pageA.innerHTML=((allNum-5)+i); }else if((allNum-nowNum) ===1 && i===4){ pageA.className= 'Paging-item Paging-item-active' pageA.innerHTML=((allNum-5)+i); }else{ // pageA.innerHTML= '['+ ((allNum-5)+i) +']' pageA.innerHTML= ((allNum-5)+i) } }else{ if(nowNum === (nowNum-3+i)){ pageA.className= 'Paging-item Paging-item-active' pageA.innerHTML= (nowNum-3+i); }else{ // pageA.innerHTML= '['+ (nowNum-3+i) +']' pageA.innerHTML= (nowNum-3+i) } } this.Box.appendChild(pageA); } } if((allNum-nowNum) >=1){ var pageA= document.createElement('a'); pageA.className= 'Paging-item Paging-item-next' pageA.href='#'+ (nowNum+1); pageA.innerHTML= '下一頁'; this.Box.appendChild(pageA); } //選擇7為標(biāo)準(zhǔn),或7以下才能顯示 if((allNum-nowNum) >= 3 && allNum >= 6){ var pageA= document.createElement('a'); pageA.className= 'Paging-item Paging-item-end' pageA.href='#'+allNum; pageA.innerHTML= '尾頁'; this.Box.appendChild(pageA); } }, /*為UI綁定事件*/ bindUI: function(){ var self= this; this.config.callback(this.config.nowNum,this.config.allNum); //利用事件委托 self.Box.onclick= function(e){ var e= e || window.event; var target= e.target || e.srcElement; if(typeof e.target.getAttribute('href') === 'string'){ var nowNum= parseInt(target.getAttribute('href').substring(1)); // console.log(nowNum); self.Box.innerHTML= ''; new Paging(null,{ nowNum: nowNum, allNum: self.config.allNum, callback: self.config.callback }) } return false; } }, /*渲染UI*/ render: function(container){ this.renderUI(); this.bindUI(); if(container){ var con= document.getElementById(container); con.appendChild(this.Box); }else{ document.body.appendChild(this.Box); } }, /*繼承對(duì)象*/ extend: function(obj1,obj2){ for(attr in obj2){ obj1[attr]= obj2[attr]; } } } //初始化調(diào)用 var page= new Paging(null,{ nowNum: 1, allNum: 10, callback: function(nowNum,allNum){ console.log('當(dāng)前頁:'+nowNum) console.log('總頁:'+allNum) } }); </script> </html>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Vue.js分頁組件實(shí)現(xiàn):diVuePagination的使用詳解
- vuejs2.0實(shí)現(xiàn)分頁組件使用$emit進(jìn)行事件監(jiān)聽數(shù)據(jù)傳遞的方法
- angularjs使用directive實(shí)現(xiàn)分頁組件的示例
- Reactjs實(shí)現(xiàn)通用分頁組件的實(shí)例代碼
- Vue.js實(shí)現(xiàn)一個(gè)自定義分頁組件vue-paginaiton
- 使用vue.js制作分頁組件
- 基于Vue.js的表格分頁組件
- js多功能分頁組件layPage使用方法詳解
- 分享一個(gè)自己寫的簡(jiǎn)單的javascript分頁組件
- JavaScript分頁組件使用方法詳解
相關(guān)文章
input file上傳 圖片預(yù)覽功能實(shí)例代碼
input file上傳圖片預(yù)覽其實(shí)很簡(jiǎn)單。今天小編就通過本文給大家介紹input file上傳 圖片預(yù)覽功能的實(shí)現(xiàn)代碼,比較簡(jiǎn)單,對(duì)input file 上傳預(yù)覽功能感興趣的朋友參考下吧2016-10-10如何在js代碼中消滅for循環(huán)實(shí)例詳解
for循環(huán)對(duì)大家來說都不陌生,下面這篇文章主要給大家介紹了關(guān)于如何在js代碼中消滅for循環(huán)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07關(guān)于JavaScript中var聲明變量作用域的推斷
這個(gè)問題其實(shí)之前困擾了我很久。如今終于想明白了,特來分享,如果有錯(cuò)誤的地方,請(qǐng)幫忙指正,我會(huì)隨時(shí)回來修正滴。2010-12-12基于javascript 顯式轉(zhuǎn)換與隱式轉(zhuǎn)換(詳解)
下面小編就為大家分享一篇基于javascript 顯式轉(zhuǎn)換與隱式轉(zhuǎn)換(詳解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-12-12微信小程序?qū)崿F(xiàn)自定義加載圖標(biāo)功能
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)自定義加載圖標(biāo)功能,非常不錯(cuò)具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07JavaScript高仿支付寶倒計(jì)時(shí)頁面及代碼實(shí)現(xiàn)
在支付寶上我們經(jīng)常會(huì)見到支付寶倒計(jì)時(shí)功能,倒計(jì)時(shí)應(yīng)用非常廣泛,下文給大家介紹js制作支付寶倒計(jì)時(shí)功能,但是里面涉及到,倒計(jì)時(shí),彈框,以及字體圖的相關(guān)知識(shí),感興趣的朋友一起看看吧2016-10-10