原生js+ajax分页组件
本文实例为大家分享了js+ajax分页组件的具体代码,供大家参考,具体内容如下
1.定义分页组件DOM
2.定义分页组件类及实例方法:
//分页组件类 functionPagination(_ref){ this.id=_ref.id;//分页组件挂载的DOM节点 this.curPage=_ref.curPage||1;//初始页码 this.draw=_ref.draw;//初始化分页请求次数 this.pageSize=_ref.pageSize||5;//分页个数 this.pageLength=_ref.pageLength;//每页多少条 this.pageTotal=0;//总共多少页 this.dataTotal=0;//总共多少数据 this.ajaxParam=_ref.ajaxParam;//分页ajax this.showPageTotalFlag=_ref.showPageTotalFlag||false;//是否显示数据统计 this.showSkipInputFlag=_ref.showSkipInputFlag||false;//是否支持跳转 this.ul=document.createElement('ul'); this.init(); }; //给实例对象添加公共属性和方法 Pagination.prototype={ init:function(){ varpagination=document.getElementById(this.id); pagination.innerHTML=''; this.ul.innerHTML=''; pagination.appendChild(this.ul); var_this=this; _this.getPage(_this.curPage) .then(function(data){ //首页 _this.firstPage(); //上一页 _this.lastPage(); //分页 _this.getPages().forEach(function(item){ varli=document.createElement('li'); if(item==_this.curPage){ li.className='active'; }else{ li.onclick=function(){ _this.curPage=parseInt(this.innerHTML); _this.init(); }; } li.innerHTML=item; _this.ul.appendChild(li); }); //下一页 _this.nextPage(); //尾页 _this.finalPage(); //是否支持跳转 if(_this.showSkipInputFlag){ _this.showSkipInput(); } //是否显示总页数,每页个数,数据 if(_this.showPageTotalFlag){ _this.showPageTotal(); } }) }, //分页数据请求 getPage:function(curPage){ var_this=this; _this.draw++; returnnewPromise(function(resolve,reh){ $.ajax({ url:_this.ajaxParam.url, type:_this.ajaxParam.type, dataType:"json", data:{ curPage:curPage, pageLength:10, draw:_this.draw }, success:function(data){ if(data.isSuccess===true){ vardata=data; _this.pageTotal=Math.ceil(parseFloat(data.data.totalResult/_this.pageLength)), _this.dataTotal=data.data.totalResult, _this.draw=data.data.draw; resolve(data) }else{ reject("请求错误") } }, error:function(err){ reject(err) } }) }) }, //首页 firstPage:function(){ var_this=this; varli=document.createElement('li'); li.innerHTML='首页'; this.ul.appendChild(li); li.onclick=function(){ varval=parseInt(1); _this.curPage=val; _this.init(); }; }, //上一页 lastPage:function(){ var_this=this; varli=document.createElement('li'); li.innerHTML='<'; if(parseInt(_this.curPage)>1){ li.onclick=function(){ _this.curPage=parseInt(_this.curPage)-1; _this.init(); }; }else{ li.className='disabled'; } this.ul.appendChild(li); }, //分页 getPages:function(){ varpag=[]; if(this.curPage<=this.pageTotal){ if(this.curPagethis.pageTotal-this.pageSize){ middle=this.pageTotal-this.pageSize+1; } while(i--){ pag.push(middle++); } } }else{ console.error('当前页数不能大于总页数'); } if(!this.pageSize){ console.error('显示页数不能为空或者0'); } returnpag; }, //下一页 nextPage:function(){ var_this=this; varli=document.createElement('li'); li.innerHTML='>'; if(parseInt(_this.curPage) 0){ _this.curPage=val; }else{ alert("请输入正确的页数!") } _this.init(); } }; li.appendChild(input); varspan2=document.createElement('span'); span2.innerHTML='页'; li.appendChild(span2); this.ul.appendChild(li); }, //是否显示总页数,每页个数,数据 showPageTotal:function(){ var_this=this; varli=document.createElement('li'); li.innerHTML='共 '+_this.pageTotal+' 页'; li.className='totalPage'; this.ul.appendChild(li); varli2=document.createElement('li'); li2.innerHTML='每页 '+_this.pageLength+' 条'; li2.className='totalPage'; this.ul.appendChild(li2); varli3=document.createElement('li'); li3.innerHTML='共 '+_this.dataTotal+' 条数据'; li3.className='totalPage'; this.ul.appendChild(li3); varli4=document.createElement('li'); li4.innerHTML=_this.curPage+"/"+_this.pageTotal; li4.className='totalPage'; this.ul.appendChild(li4); } };
3.实例化分页组件
letpageInstance=newPagination({ id:'pagination', curPage:1,//初始页码,不填默认为1 draw:0,//当前渲染次数统计 pageLength:10,//每页多少条 pageSize:5,//分页个数,不填默认为5 showPageTotalFlag:true,//是否显示数据统计,不填默认不显示 showSkipInputFlag:true,//是否支持跳转,不填默认不显示 ajaxParam:{//分页ajax url:'https://www.easy-mock.com/mock/5cc6fb7358e3d93eff3d812c/page', type:"get", } })
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。