国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

原生javascript實(shí)現(xiàn)分頁效果

2019-11-19 16:46:44
字體:
供稿:網(wǎng)友

隨著近幾年前端行業(yè)的迅猛發(fā)展,各種層出不窮的新框架,新方法讓我們有點(diǎn)眼花繚亂。

最近剛好比較清閑,所以沒事準(zhǔn)備擼擼前端的根基javascript,純屬練練手,寫個(gè)分頁,順便跟大家分享一下

function pageFunc(conf){ this.myFunc = conf.click //用戶點(diǎn)擊要執(zhí)行的方法 this.total = conf.total; //總頁數(shù) this.currentPage = 1; //當(dāng)前頁碼 this.init()  //初始化 }pageFunc.prototype.init = function(){ var total = this.total, currentPage = this.currentPage, _this = this; listeners = { 'setWhat' : function(opts) {  _this.aClick(opts.src)  return false; } }; listenersPre = { 'lmw-pre' : function(opts) {  _this.prevClick()  return false; } }; listenersAdd = { 'lmw-add' : function(opts) {  _this.addClick()  return false; } }; var rootele = this.createPage(1,total); document.getElementById('page-coat').innerHTML = rootele $on(document.getElementById('page-coat'), ['click'], listeners);//點(diǎn)擊a標(biāo)簽 $on(document.getElementById('page-coat'), ['click'], listenersPre);//點(diǎn)擊上一頁 $on(document.getElementById('page-coat'), ['click'], listenersAdd);//點(diǎn)擊下一頁}//創(chuàng)建HTML分頁結(jié)構(gòu)字符串pageFunc.prototype.createPage = function(page,total){ var str = `<a class="lmw-current" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >${page}</a>` for(var i=1;i<=3;i++){ if(page-i>1){  str = `<a attr-action="setWhat" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >${page-i}</a>`+str } if(page+i<total){  str = str+`<a attr-action="setWhat" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >${(page+i)}</a>` } }; if(page-4>1){ str = '<span>...</span>'+str }; if(page+4<total){ str = str+'<span>...</span>' }; if(page>1){ str = `<a class="lmw-pre" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >上一頁</a><a attr-action="setWhat" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >1</a>`+str }; if(page<total){ str = str+`<a attr-action="setWhat" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >${total}</a><a class="lmw-add" href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >下一頁</a>` }; return str}//上一頁方法pageFunc.prototype.prevClick = function(){ var total = this.total var va = --this.currentPage  var newret = this.createPage(va, total) document.getElementById('page-coat').innerHTML = newret this.myFunc(va) }//下一頁方法pageFunc.prototype.addClick = function(){ var total = this.total var va = ++this.currentPage var newret = this.createPage(va, total) document.getElementById('page-coat').innerHTML = newret  this.myFunc(va) };//點(diǎn)擊方法pageFunc.prototype.aClick = function(_this){ var total = this.total var va = parseInt(_this.innerText); this.currentPage = va var rootele = this.createPage(va, total) document.getElementById('page-coat').innerHTML = rootele this.myFunc(va) };//二:封裝事件代理方法function $on(dom, event, listeners) { $addEvent(dom, event, function(e) { var e = e || window.event, src = e.target || e.srcElement, action, returnVal;  while (src && src !== dom) { action = src.getAttribute('attr-action') || src.getAttribute('class') ; if (listeners[action]) { returnVal = listeners[action]({ src : src, e : e, action : action }); if (returnVal === false) { break; } } src = src.parentNode; } });};//1、封裝跨瀏覽器事件綁定方法function $addEvent(obj, type, handle) { if(!obj || !type || !handle) { return; } if( obj instanceof Array) { for(var i = 0, l = obj.length; i < l; i++) { $addEvent(obj[i], type, handle); } return; } if( type instanceof Array) { for(var i = 0, l = type.length; i < l; i++) { $addEvent(obj, type[i], handle); } return; }//2、解決IE中this指向window的問題 function createDelegate(handle, context) { return function() { return handle.apply(context, arguments); }; }  if(window.addEventListener) { var wrapper = createDelegate(handle, obj); obj.addEventListener(type, wrapper, false); } else if(window.attachEvent) { var wrapper = createDelegate(handle, obj); obj.attachEvent("on" + type, wrapper); } else { obj["on" + type] = handle; }};

使用方法:

<!DOCTYPE HTML><html><head> <meta charset="UTF-8"> <title>分頁效果</title> <style type="text/css"> #page-coat a{  text-decoration:none;   display: inline;  float: left;  padding: 3px 10px 3px 10px;   overflow: hidden;   border:1px solid #ccc;  color:#999;  margin-right: 5px;  cursor: pointer;  background: #fff;   } #page-coat a:hover{  border: 1px solid #FF6600;  background-color: #FF6600;  color: #fff;  } #page-coat span{  display: inline;  float: left;  color:#999;  background: #fff; } #page-coat a.lmw-current{  color: #FF6600;  border: 1px solid #FF6600;  background-color: #FFEEE5; } </style></head><body class="l-bg2"> <div id="page-coat">  </div> </body><script type="text/javascript" src="js/jquery-1.7.2.min.js"></script><script type="text/javascript" src="js/public.js"></script><script type="text/javascript">var conf = { 'total':100, 'click':function(e){ //e為當(dāng)前頁碼/* $.get('/php',{"page":e},function(data){  console.log('ok') })*/ }}var page = new pageFunc(conf);</script></html>

用原生還是比較麻煩的,為了實(shí)現(xiàn)業(yè)務(wù),還得去封裝一個(gè)模仿JQ的.on事件綁定方法。寫的比較簡陋,一些配置接口沒有暴露出來,還可以再抽象暴露。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 上蔡县| 福贡县| 仪陇县| 长宁区| 英山县| 基隆市| 鸡东县| 塘沽区| 凭祥市| 锡林郭勒盟| 沭阳县| 东安县| 诏安县| 北安市| 东阳市| 宝坻区| 宜城市| 莆田市| 宿松县| 鹤山市| 绿春县| 宁安市| 临漳县| 黑山县| 乌兰县| 夏邑县| 桂阳县| 晋江市| 庆阳市| 长子县| 湘阴县| 建宁县| 苍梧县| 邢台市| 永康市| 阳新县| 高陵县| 霍城县| 孟村| 宜君县| 松溪县|