分享一个自己写的简单的javascript分页组件
自己写的一个简单的分页组件,主要功能还有实现都在JS中,html页面中只用增加一个放置生成分页的DIV,并给定容器的id.
html结构如下:
<ulclass="pagination"id="pageDIV"> </ul> class="pagination"给定了分页的样式, id="pageDIV"用于放置JS生成的分页
CSS结构如下:
.pagination{ margin-top:10px; margin-bottom:10px; display:inline-block; padding-left:0; margin:20px0; border-radius:4px; } .pagination>li{ display:inline; } .pagination>li:first-child>a{ margin-left:0; border-top-left-radius:4px; border-bottom-left-radius:4px; } .pagination>li>a{ position:relative; float:left; padding:6px12px; margin-left:-1px; line-height:1.42857143; color:#337ab7; text-decoration:none; background-color:#fff; border:1pxsolid#ddd; cursor:pointer; } .pagination>li>a.navcur{ background:#cccccc; color:#ffffff; }
下面是JS结构,注意要引用JQuery
/** *@pageContentID渲染分页的DIV元素 *@curPage当前开始页 *@totalCount总数量 *@pageRows每页显示数量 *@callback显示数据的回调函数 */ functionPageList(pageContentID,option){ this.pageContentID=document.getElementById(pageContentID); this.curPage=option.curPage; this.totalCount=option.totalCount; this.pageRows=option.pageRows; this.callback=option.callback; this.pageSize=Math.ceil(this.totalCount/this.pageRows); } PageList.prototype={ init:function(){ this.renderbtn(); }, firstpage:function(){ var_self=this; _self._firstpage=document.createElement("li"); _self._firstpageA=document.createElement("a"); _self._firstpageA.innerHTML="首页"; _self._firstpage.appendChild(_self._firstpageA); this.pageContentID.appendChild(_self._firstpage); _self._firstpage.onclick=function(){ _self.gotopage(1); } }, lastpage:function(){ var_self=this; _self._lastpage=document.createElement("li"); _self._lastpageA=document.createElement("a"); _self._lastpageA.innerHTML="尾页"; _self._lastpage.appendChild(_self._lastpageA); this.pageContentID.appendChild(_self._lastpage); _self._lastpage.onclick=function(){ _self.gotopage(_self.pageSize); } }, prewpage:function(){ var_self=this; _self._prew=document.createElement("li"); _self._prewA=document.createElement("a"); _self._prewA.innerHTML="<<"; _self._prew.appendChild(_self._prewA); this.pageContentID.appendChild(_self._prew); _self._prew.onclick=function(){ if(_self.curPage>1){ _self.curPage--; } _self.callback.call(this,this.curPage); _self.init(); console.log(_self.curPage); } }, nextpage:function(){ var_self=this; _self._next=document.createElement("li"); _self._nextA=document.createElement("a"); _self._nextA.innerHTML=">>"; _self._next.appendChild(_self._nextA); this.pageContentID.appendChild(_self._next); _self._next.onclick=function(){ if(_self.curPage<_self.pageSize){ _self.curPage++; } _self.callback.call(this,this.curPage); _self.init(); console.log(_self.curPage); } }, pagenum:function(){ var_self=this; if(this.pageSize<=10){ for(vari=1,len=this.pageSize;i<=len;i++){ _self._num=document.createElement("li"); _self._numA=document.createElement("a"); _self._numA.innerHTML=i; _self._num.appendChild(_self._numA); this.pageContentID.appendChild(_self._num); _self._num.onclick=function(){ varcurpage=$(this).text(); _self.gotopage(curpage); } } } else{ if(_self.curPage<=10){ for(vari=1;i<=10;i++){ _self._num=document.createElement("li"); _self._numA=document.createElement("a"); _self._numA.innerHTML=i; _self._num.appendChild(_self._numA); this.pageContentID.appendChild(_self._num); _self._num.onclick=function(){ varcurpage=$(this).text(); _self.gotopage(curpage); } } } elseif(_self.curPage>10&&_self.curPage<=this.pageSize){ if(this.pageSize<Math.ceil(_self.curPage/10)*10){ for(vari=Math.floor(_self.curPage/10)*10+1;i<=this.pageSize;i++){ if(_self.curPage>this.pageSize) return; _self._num=document.createElement("li"); _self._numA=document.createElement("a"); _self._numA.innerHTML=i; _self._num.appendChild(_self._numA); this.pageContentID.appendChild(_self._num); _self._num.onclick=function(){ varcurpage=$(this).text(); _self.gotopage(curpage); } } }else{ if(Math.ceil(_self.curPage/10)*10==_self.curPage){ for(vari=_self.curPage-9;i<=_self.curPage;i++){ _self._num=document.createElement("li"); _self._numA=document.createElement("a"); _self._numA.innerHTML=i; _self._num.appendChild(_self._numA); this.pageContentID.appendChild(_self._num); _self._num.onclick=function(){ varcurpage=$(this).text(); _self.gotopage(curpage); } } }else{ for(vari=Math.floor(_self.curPage/10)*10+1;i<=Math.ceil(_self.curPage/10)*10;i++){ _self._num=document.createElement("li"); _self._numA=document.createElement("a"); _self._numA.innerHTML=i; _self._num.appendChild(_self._numA); this.pageContentID.appendChild(_self._num); _self._num.onclick=function(){ varcurpage=$(this).text(); _self.gotopage(curpage); } } } } } } $(".paginationli").each(function(){ if($(this)[0].innerText==_self.curPage){ $(".paginationli").children("a").removeClass("navcur"); $(this).children("a").addClass("navcur"); } }); }, gotopage:function(curpage){ this.curPage=curpage; this.callback.call(this,this.curPage); this.init(); console.log(this.curPage); }, renderbtn:function(){ $(".pagination").html(""); this.firstpage(); this.prewpage(); this.pagenum(); this.nextpage(); this.lastpage(); } }; $(function(){ varpager=newPageList("pageDIV",{ curPage:1, totalCount:26, pageRows:1, callback:callbackFuc }); pager.init(); }); functioncallbackFuc(curpage){ }
说明:
此分页是以10页为标准,低于10页的时候全部显示,大于10页的时候,进行翻页显示余下页数.
调用方法:
$(function(){ varpager=newPageList("pageDIV",{ curPage:1, totalCount:26, pageRows:1, callback:callbackFuc }); pager.init(); });
以上就是本分页组件的核心代码了,希望小伙伴们能够喜欢。