纯javascript实现分页(两种方法)


Posted in Javascript onAugust 26, 2015

先给大家贴效果图:

纯javascript实现分页(两种方法)

纯javascript实现分页(两种方法)

     网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了。其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用limit进行分页。

     因为这是我自己第一次动手用js写分页,写的应该也不是很完美,有些公共的没有抽取出来,但是用起来还是可以的,这块代码是可以把它当做公共的分页去处理的,我就是用

这块代码写了两个稍微不同一些的分页!公共的代码抽取的也差不多,主要就是ajax后台以及返回的值不同而已,只要把总页码的值获取到,点击首页/下一页等传值正确的话,基本上分页是不会出什么问题的

纯js实现分页方法一:

废话不多说,直接上代码了!     

注:本项目是全程使用js来写的,前台的数据通过ajax进行获取,然后再进行拼装,动态加载到页面。

1.先把上一页,下一页等的代码附上(里面的值都是伪值,下面会在js里进行重新赋值的!)

<ul class="page" id="page">
  <li id="shouye" class="p-prev disabled">
   <a href='javascript:indexpage(1);'>首 页</a>
  </li>
  <li id="shangyiye" class="p-prev disabled" >
   <a href='javascript:indexpage(-1);'><i></i>上一页</a>
  </li>
  <li ><a id="one" href="javascript:void(0);" >1</a></li>
  <li><a id="two" href="javascript:void(0);" >2</a></li>
  <li><a id="three" href="javascript:void(0);" >3</a></li>
  <li class="more"><a id="five" href="javascript:void(0);" >...</a></li>
  <li><a id="fore" href="javascript:void(0);" >13855</a></li>
  <li class='p-next'>
   <a href='javascript:indexpage(-3);' onclick="jumpToPage('2','/goods/ajaxqueryGoodsList.do.html','','goodsListContainer','13855', listPageCallback);">下一页<i></i></a>
  </li>
  <li id="weiye" class='p-next'>
   <a href='javascript:void(0);' onclick="indexpage(0);">尾 页</a>
  </li>
  <li class="total">
      <span id="span_number">共13855页 到第<input type="text" id="input_number" class="page-txtbox" />页
       <input name="" value="确定" type="button" onclick="jumpToPage(jQuery('#input_number').val(),'/goods/ajaxqueryGoodsList.do.html','','goodsListContainer','13855', listPageCallback);" class="page-btn"/>
      </span>
  </li>
 </ul>

2.首先在页面放两个隐藏域,一个是当前页码,一个是总页码,总页码是页面加载完,从后台查询出来后直接附上值的,当前页码是没操作一个,就要对当前页码赋值

<input id="jiazai" type="hidden" ></input><!-- 当前页码 -->
 <input id="totalpage" type="hidden" ></input><!-- 总页码 -->

3.写一个页面加载完的function,给总页码和当前页码赋值

$(function(){
  $('#jiazai').val(1);//给当前页码进行赋值,默认为第一页
  ajaxfunction(page,arg,chipssort,'');//这个方法是抽取的ajax后台访问的方法
});

 4.抽取的ajax方法,此页面会用到好几次这个方法,所有把它收取了出来,因为页面的数据时通过ajax从后台获取到的,后台返回的是一个List集合

//抽取ajax的方法
function ajaxfunction(page,arg,chipssort,fontval){
 $.ajax({
  type:'POST',
  url:'/admin/receptionchips/showlist',//请求的url地址
  data:{
   page:page,
   sort:arg,
   chipssort:chipssort,
   fontval:fontval
  },
  dataType:'json',
  contentType:'application/x-www-form-urlencoded; charset=utf-8',
  success:function(data){
   //返回值在进行访问抽取的方法,从后台返回
   commonfunction(data);
  }
 });
}

 5.代码看到这也不是很多,最后一个了

//抽取拼串的方法
function commonfunction(data){
 $('#projectlist').find("li").remove();
  for (var i=0;i<data.length;i++ )
  { 
  /*****因为此页面是动态加载的,这里主要就是进行拼串,代码也不少,就不漏出来占空间了*****/<br>




  }<br>


//开始是分页的核心了
  if(data.length>0){
   //设置页码
   var pading = data[0].padingnum;//总页码
   $('#totalpage').val(pading);
   var page = $('#jiazai').val();//当前页
    $('#countpage').html("<b id='currentPageNo'>"+page+"</b>/"+pading+"");
    $('#span_number').html("共"+pading+"页 到第<input type='text' id='input_number' class='page-txtbox' />页<input name='' value='确定' type='button' onclick='indexpage(-2)'/goods/ajaxqueryGoodsList.do.html','','goodsListContainer','"+pading+"', listPageCallback);' class='page-btn'/>")
  }else{
   $('#countpage').html("<b id='currentPageNo'>"+0+"</b>/"+0+"");
  }
  //设置分页的底部 就是 首页 1 2 3 4 5 6 尾页
  var pading = data[0].padingnum;//总页码href="javascript:void(0);"
  var nowpage = $('#jiazai').val();//当前页
  //one two three five fore<br>


//下面代码看着是比较麻烦,但是也不难理解 全是一样的代码,只不过是加了些判断
  if(nowpage<5 ){
   $('#one').text(1);
   $('#one').attr('href','javascript:pagenum("'+1+'");');
   $('#two').text(2);
   $('#two').attr('href','javascript:pagenum("'+(2)+'");');
   $('#three').text(3);
   $('#three').attr('href','javascript:pagenum("'+(3)+'");');
   $('#five').text(4);
   $('#five').attr('href','javascript:pagenum("'+(4)+'");');
   $('#fore').text(5);
   $('#fore').attr('href','javascript:pagenum("'+(5)+'");');
   $('#five').parent().show();
   $('#fore').parent().show();
  }else{
   //alert("已经不是第五页了");
   //设置中间的为当前页
   $('#one').text(Number(nowpage)-2);
   $('#one').attr('href','javascript:indexpage("'+(Number(nowpage)-2)+'");');
   $('#two').text(Number(nowpage)-1);
   $('#two').attr('href','javascript:indexpage("'+(Number(nowpage)-1)+'");');
   $('#three').text(nowpage);
   $('#three').attr('href','javascript:indexpage("'+(nowpage)+'");');
   $('#five').parent().show();
   $('#fore').parent().show();
   //判断下一页是否超过了总页数
   if(Number(nowpage)+1>pading){
    $('#five').parent().hide();
    $('#fore').parent().hide();
   }else{
    $('#five').parent().show();
    $('#five').text(Number(nowpage)+1);
    $('#five').attr('href','javascript:indexpage("'+(Number(nowpage)+1)+'");');
   }
   //判断下一页的第二页是否超过了总页数
   if(Number(nowpage)+2>pading){
    $('#fore').parent().hide();
   }else{
    $('#fore').parent().show();
    $('#fore').text(Number(nowpage)+2);
    $('#fore').attr('href','javascript:indexpage("'+(Number(nowpage)+2)+'");');
   }
  }
  //如果总页数小于5,这块代码主要就是设置 1 2 3 4 5 这些的显示和隐藏的
  if(pading==0){
   $('#one').parent().hide();
   $('#two').parent().hide();
   $('#three').parent().hide();
   $('#five').parent().hide();
   $('#fore').parent().hide();
  }else if(pading==1){
   $('#shouye').hide();
   $('#weiye').hide();
   $('#one').parent().hide();
   $('#two').parent().hide();
   $('#three').parent().hide();
   $('#five').parent().hide();
   $('#fore').parent().hide();
  }else if(pading==2){
   $('#one').parent().show();
   $('#two').parent().show();
   $('#three').parent().hide();
   $('#five').parent().hide();
   $('#fore').parent().hide();
  }else if(pading==3){
   $('#one').parent().show();
   $('#two').parent().show();
   $('#three').parent().show();
   $('#five').parent().hide();
   $('#fore').parent().hide();
  }else if(pading==4){
   $('#one').parent().show();
   $('#two').parent().show();
   $('#three').parent().show();
   $('#five').parent().show();
   $('#fore').parent().hide();
  }else{
   $('#one').parent().show();
   $('#two').parent().show();
   $('#three').parent().show();
   $('#five').parent().show();
   $('#fore').parent().show();
  }
  //设置高亮显示的,就是是第一页时,1亮,第二页时 2亮
  $('#page a').each(function() {
   $(this).parent().removeClass("current");
   if($(this).text()==nowpage){
    $(this).parent().addClass("current");
   }
  });
  //分页完返回页面顶端
  $("html,body").animate({scrollTop:0}, 500);
  //最后,给当前页码加1
 $('#jiazai').val(Number(bianlaing)+Number(1)); 
}

纯js实现分页方法二:

function goPage(pno,psize){ 
 var itable = document.getElementById("idData"); 
 var num = itable.rows.length;//表格行数 
 var totalPage = 0;//总页数 
 var pageSize = psize;//每页显示行数 
 if((num-1)/pageSize > parseInt((num-1)/pageSize)){  
  totalPage=parseInt((num-1)/pageSize)+1;  
  }else{  
  totalPage=parseInt((num-1)/pageSize);  
  }  
 var currentPage = pno;//当前页数 
 var startRow = (currentPage - 1) * pageSize+1;//开始显示的行  
  var endRow = currentPage * pageSize+1;//结束显示的行  
  endRow = (endRow > num)? num : endRow; 
 //前三行始终显示 
 for(i=0;i<1;i++){ 
 var irow = itable.rows[i]; 
 irow.style.display = "block"; 
 } 
 for(var i=1;i<num;i++){ 
 var irow = itable.rows[i]; 
 if(i>=startRow&&i<endRow){ 
 irow.style.display = "block"; 
 }else{ 
 irow.style.display = "none"; 
 } 
 } 
  var pageEnd = document.getElementById("pageEnd"); 
  var tempStr = ""; 
  if(currentPage>1){ 
  tempStr += "<a href="/" mce_href="/""#/" onmouseout='MM_swapImgRestore()' onmouseover=/"MM_swapImage('Image69','','images/back_buttom01_dowm.jpg',1)/" onClick=/"goPage("+(currentPage-1)+","+psize+")/"><img src="/" mce_src="/""images/back_buttom01.jpg/" name='Image69' width='38' height='15' border='0' id='Image69' /></a> " 
  }else{ 
  tempStr += "<a href="/" mce_href="/""#/" onmouseout='MM_swapImgRestore()' onmouseover=/"MM_swapImage('Image69','','images/back_buttom01_dowm.jpg',1)/"><img src="/" mce_src="/""images/back_buttom01.jpg/" name='Image69' width='38' height='15' border='0' id='Image69' /></a> "; 
  } 
  for (var i = 1; i <= totalPage; i++) { 
   if (i == currentPage) { 
     tempStr += i+" "; 
   } else { 
     tempStr += "<a href="/" mce_href="/""#/" onClick=/"goPage("+(i)+","+psize+")/">"+i+"</a> " 
   } 
  } 
  if(currentPage<totalPage){ 
  tempStr += "<a href="/" mce_href="/""#/" onmouseout=/"MM_swapImgRestore()/" onmouseover=/"MM_swapImage('Image68','','images/next_buttom01_dowm.jpg',1)/" onClick=/"goPage("+(currentPage+1)+","+psize+")/"><img src="/" mce_src="/""images/next_buttom01.jpg/" name='Image68' width='38' height='15' border='0' id='Image68' /></a> "; 
  }else{ 
  tempStr += "<a href="/" mce_href="/""#/" onmouseout=/"MM_swapImgRestore()/" onmouseover=/"MM_swapImage('Image68','','images/next_buttom01_dowm.jpg',1)/"><img src="/" mce_src="/""images/next_buttom01.jpg/" name='Image68' width='38' height='15' border='0' id='Image68' /></a> "; 
  } 
  tempStr +="<a href="/" mce_href="/""#top/" onmouseout=/"MM_swapImgRestore()/" onmouseover=/"MM_swapImage('Image20','','images/top_buttom01_dowm.jpg',1)/"><img src="/" mce_src="/""images/top_buttom01.jpg/" name='Image20' width='38' height='15' border='0' id='Image20' /></a>"; 
  document.getElementById("barcon").innerHTML = tempStr; 
  } 
 var base='<%=base%>'; 
 window.onload = function(){ 
  goPage(1,10); 
 } 
<div id="barcon" name="barcon"></div>

温馨提示:js代码中上一页 下一页定义的图片根据自己需求可以改的

好了,到这里分页就完成了,如果你们需要使用的话,可能会话费一会去理解我的代码,其实代码不难,我是使用了两个小时把它写完的,只要一行一行代码看,并且自己再加注释,把这块弄过去,不出半小时绝对搞定!

好了,到此为止用两种方法给大家介绍纯js实现分页就结束了,有不明白的地方,欢迎提出,交流,共同学习进步,谢谢。

Javascript 相关文章推荐
jquery cookie插件代码类
May 26 Javascript
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
Feb 15 Javascript
jQuery获取地址栏参数插件(模仿C#)
Oct 26 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
Feb 02 Javascript
使用jQuery.wechat构建微信WEB应用
Oct 09 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
vue.js初学入门教程(2)
Nov 07 Javascript
JavaScript html5利用FileReader实现上传功能
Mar 27 Javascript
Vue常用的几个指令附完整案例
Nov 06 Javascript
详解JavaScript实现动态的轮播图效果
Apr 29 Javascript
javascript实现切割轮播效果
Nov 28 Javascript
js生成1到100的随机数最简单的实现方法
Feb 07 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
Aug 26 #Javascript
jquery实现图片水平滚动效果代码分享
Aug 26 #Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
Aug 26 #Javascript
jquery实现漂亮的二级下拉菜单代码
Aug 26 #Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
Aug 26 #Javascript
jQuery实现的简洁下拉菜单导航效果代码
Aug 26 #Javascript
jQuery网页选项卡插件rTabs用法实例分析
Aug 26 #Javascript
You might like
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
Ajax+PHP实现的模拟进度条功能示例
2019/02/11 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
2019/06/03 PHP
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
python enumerate函数的使用方法总结
2017/11/15 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python生成九宫格图片
2018/11/19 Python
Python中Numpy ndarray的使用详解
2019/05/24 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
python学生信息管理系统实现代码
2019/12/17 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
.net软件工程师应聘上机试题
2015/03/10 面试题
星空联盟C# .net笔试题
2014/12/05 面试题
初中生个人学习的自我评价
2013/12/04 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
影视后期实训报告
2014/11/05 职场文书
领导欢迎词致辞
2015/01/23 职场文书
护士个人总结范文
2015/02/13 职场文书
2015年环卫工作总结
2015/04/28 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
django如何自定义manage.py管理命令
2021/04/27 Python