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)文章
Webpack學(xué)習(xí)之動(dòng)態(tài)import原理及源碼分析
這篇文章主要為大家介紹了Webpack學(xué)習(xí)之動(dòng)態(tài)import原理及源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
JavaScript 裝逼指南(js另類(lèi)寫(xiě)法)
如何寫(xiě)JavaScript才能逼格更高呢?怎樣才能、讓別人一眼看出你不簡(jiǎn)單呢?是否很期待別人在看完你的代碼之后感嘆一句原來(lái)還可以這樣寫(xiě)呢?下面列出一些在JavaScript時(shí)的裝逼技巧,也可說(shuō)是非常實(shí)用的寫(xiě)法2020-05-05
用JS實(shí)現(xiàn)3D球狀標(biāo)簽云示例代碼
3D球狀標(biāo)簽云的效果想必很多朋友在瀏覽網(wǎng)頁(yè)時(shí)都有見(jiàn)到過(guò)吧,看起來(lái)提復(fù)雜的,其實(shí)實(shí)現(xiàn)起來(lái)挺容易的,感興趣的朋友可以了解下本文2013-12-12
javascript跨域請(qǐng)求包裝函數(shù)與用法示例
這篇文章主要介紹了javascript跨域請(qǐng)求包裝函數(shù)與用法,結(jié)合實(shí)例形式分析了javascript基于ajax的跨域請(qǐng)求封裝函數(shù)與相關(guān)使用技巧,需要的朋友可以參考下2016-11-11
js動(dòng)態(tài)修改表格行colspan列跨度的方法
這篇文章主要介紹了js動(dòng)態(tài)修改表格行colspan列跨度的方法,實(shí)例分析了javascript動(dòng)態(tài)修改html中table屬性的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
基于純JS實(shí)現(xiàn)多張圖片的懶加載Lazy過(guò)程解析
這篇文章主要介紹了基于純JS實(shí)現(xiàn)多張圖片的懶加載Lazy過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10

