JavaScript實(shí)現(xiàn)列表分頁功能特效
最近寫了一個(gè)js分頁的方法,盡管已經(jīng)有現(xiàn)成的可以用,但還是想自己寫寫,搞搞清楚。最終實(shí)現(xiàn)的效果是:上一頁、第一頁、…(上n個(gè)頁碼)、n個(gè)頁碼、…(下n個(gè)頁碼)、最后一頁、下一頁。n可以是奇數(shù)也可以是偶數(shù),一般都喜歡取奇數(shù),星石調(diào)用的時(shí)候傳入的參數(shù)是5。寫的時(shí)候,主要注意了以下幾個(gè)地方:
頁碼等于1時(shí),只顯示上一頁、第一頁、最后一頁,且都沒有跳轉(zhuǎn);
頁碼小于等于2時(shí),不需要中間的n個(gè)頁碼;
頁碼小于等于n時(shí),顯示所有頁碼,不顯示2個(gè)“…”;
2個(gè)“…”換頁時(shí),換n個(gè)頁碼,如果接近最前面或最后面幾頁了,則顯示最前面或最后面n個(gè)頁碼。
下面貼出代碼,供大家探討:
//總頁數(shù),當(dāng)前頁數(shù),跳轉(zhuǎn)地址,第一頁和最后一頁之間顯示的頁碼數(shù)量 function pageBar(tp,cp,url,pn){ var str = ‘<ul class=”page”>'; if(tp>1 && cp>1){ var prev = cp-1; str += ‘<li><a class=”prev” title=”上一頁” href=”javascript:goPage(‘+prev+‘,\”+url+‘\');”><span>上一頁</span></a></li> ‘; }else{ str += ‘<li><a class=”prev” title=”上一頁” href=”javascript:void(0);”><span>上一頁</span></a></li> ‘; } if(tp>1){ //第一頁 if(cp==1){ str +=‘<li class=”current”><a href=”javascript:goPage(1,\”+url+‘\');”><span>1</span></a></li> ‘; }else{ str +=‘<li><a href=”javascript:goPage(1,\”+url+‘\');”><span>1</span></a></li> ‘; } if(tp>2){ var pnh = Math.floor(pn/2); //循環(huán)開始頁碼 var s = cp-pnh; if(s<=1){ s = 2; } //循環(huán)結(jié)束頁碼 var e = cp+pnh; if(e>=tp){ e = tp-1; } if(s<=(1+pnh)){ if(tp>(pn+2)){ e = s+(pn-1); if(e>=tp){ e = tp-1; } }else{ s = 2; } } if(e>=(tp-pnh)){ if(tp>(pn+2)){ s = e-(pn-1); if(s<=1){ s = 2; } }else{ e = tp-1; } } if(e<s){ e = s; } //第一頁后的多頁跳轉(zhuǎn) if(s>2){ var sp = cp-pn; if(sp<1){ sp=1; } str += ‘<li><a name=”break” href=”javascript:goPage(‘+sp+‘,\”+url+‘\');”><span>…</span></a></li> ‘; } for(var i=s;i<=e;i++){ if(i==cp){ str += ‘<li class=”current”><a href=”javascript:goPage(‘+i+‘,\”+url+‘\');”><span>'+i+‘</span></a></li> ‘; }else{ str += ‘<li><a href=”javascript:goPage(‘+i+‘,\”+url+‘\');”><span>'+i+‘</span></a></li> ‘; } } //最后一頁前的多頁跳轉(zhuǎn) if(e < (tp-1)){ var ep = cp+pn; if(ep>tp){ ep=tp; } str += ‘<li><a name=”break” href=”javascript:goPage(‘+ep+‘,\”+url+‘\');”><span>…</span></a></li> ‘; } } //最后一頁 if(cp==tp){ str +=‘<li class=”current”><a href=”javascript:goPage(‘+tp+‘,\”+url+‘\');”><span>'+tp+‘</span></a></li> ‘; }else{ str +=‘<li><a href=”javascript:goPage(‘+tp+‘,\”+url+‘\');”><span>'+tp+‘</span></a></li> ‘; } }else{ str +=‘ <li class=”current”><a href=”javascript:void(0);”><span>1</span></a></li> ‘; } if(tp>1 && cp<tp){ var next = cp+1; str += ‘<li><a class=”next” title=”下一頁” href=”javascript:goPage(‘+next+‘,\”+url+‘\');”><span>下一頁</span></a></li>'; }else{ str += ‘<li><a class=”next” title=”下一頁” href=”javascript:void(0);”><span>下一頁</span></a></li>'; } str += ‘</ul>'; return str; } //跳轉(zhuǎn)頁碼,跳轉(zhuǎn)地址 function goPage(cp,url){ window.location.href = url+cp; }
以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。
- js腳本分頁代碼分享(7種樣式)
- 純javascript實(shí)現(xiàn)分頁(兩種方法)
- ANGULARJS中使用JQUERY分頁控件
- JSP+EXt2.0實(shí)現(xiàn)分頁的方法
- JSP實(shí)現(xiàn)的簡(jiǎn)單分頁示例
- 使用Jquery+Ajax+Json如何實(shí)現(xiàn)分頁顯示附JAVA+JQuery實(shí)現(xiàn)異步分頁
- JSP實(shí)現(xiàn)的簡(jiǎn)單分頁顯示效果代碼
- JSP通用分頁框架
- jquery+json實(shí)現(xiàn)分頁效果
- jquery分頁插件jquery.pagination.js使用方法解析
- jquery分頁插件jquery.pagination.js實(shí)現(xiàn)無刷新分頁
- Angular.js與Bootstrap相結(jié)合實(shí)現(xiàn)表格分頁代碼
- js實(shí)現(xiàn)ajax分頁完整實(shí)例
- js多功能分頁組件layPage使用方法詳解
- 基于Vue.js的表格分頁組件
- 純JS前端實(shí)現(xiàn)分頁代碼
相關(guān)文章
完美解決IE9瀏覽器出現(xiàn)的對(duì)象未定義問題
下面小編就為大家?guī)硪黄昝澜鉀QIE9瀏覽器出現(xiàn)的對(duì)象未定義問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦2016-09-09html的DOM中document對(duì)象forms集合用法實(shí)例
這篇文章主要介紹了html的DOM中document對(duì)象forms集合用法,實(shí)例分析了forms集合的功能與使用技巧,需要的朋友可以參考下2015-01-01JS 對(duì)java返回的json格式的數(shù)據(jù)處理方法
下面小編就為大家?guī)硪黄狫S 對(duì)java返回的json格式的數(shù)據(jù)處理方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12director.js實(shí)現(xiàn)前端路由使用實(shí)例
這篇文章主要介紹了director.js實(shí)現(xiàn)前端路由使用實(shí)例,director.js是最純粹的路由注冊(cè)/解析器,它在不刷新頁面的情況下,利用“#”符號(hào)組織不同的URL路徑,需要的朋友可以參考下2015-02-02