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