分享一个自己写的简单的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();
});
以上就是本分页组件的核心代码了,希望小伙伴们能够喜欢。