前端实现分页

  //思路:拿到整个json数据,把整个json切割成若干个数组,如:切割成如下的每页显示5条数据的数组,那么总共61条数据就会被切割成13个数组,所以在做分页的时候第一个数组就对应渲染的第一页。
  
  var page = function (pageSize,total, pageNum) {
  
  var pageSize = pageSize;//每页数据条数
  
  var pageTotal = Math.ceil(total / pageSize);//总共多少页
  
  var pageNum = pageNum - 1 || 0;//页码pageNum-1是因为pageNum初始值一般为1
  
  function cutArry() {//数组切割
  
  let arr = [];
  
  for (let i = 0; i < pageTotal; i++) {
  
  let len = pageSize;
  
  let strat = i * len;
  
  let end = strat + len;
  
  arr.push(data.slice(strat, end));
  
  }
  
  return arr;
  
  }
  
  function renderPage() {
  
  let html = '';
  
  cutArry().map(function (item, index) {
  
  html += `<li>${index + 1}</li>`
  
  })
  
  $('.page').html(html)
  
  for (let i = 10; i < pageTotal; i++) {
  
  $(`.page li:eq(${i})`).hide()//分页大于10页的页码就隐藏
  
  }
  
  if (cutArry().length > 1) {
  
  $('.page li:eq(0)').before('<span class="upPage">上一页</span>');
  
  $('.page li:last').after('<span class="nextPage">下一页</span>');
  
  }
  
  if ($('.page li').length > 10) {
  
  $('.page .nextPage').before(`<span class="pagePre" style="margin-right: 5px">...</span>`)
  
  }
  
  }
  
  renderPage()
  
  //渲染数组数据,默认渲染第一个数组
  
  function tableData(pageNum) {
  
  let tbody = '';
  
  let data = cutArry()[pageNum]
  
  for (let j = 0; j < data.length; j++) {
  
  tbody += `<tr>
  
  <td>${cutArry(www.michenggw.com)[pageNum][j].isSuccess}</td>
  
  <td>${cutArry(www.chaoyueyule.cn)[pageNum][j].chargeMoney}</td>
  
  <td>${cutArry()[pageNum][j].createTime}</td>
  
  <td>${cutArry()[pageNum][j].commodityName}</td>
  
  </tr>`
  
  }
  
  $('tbody').html(tbody)
  
  $('.num').remove(www.dasheng178.com);
  
  $('.nextPage').after(`<span class="num" style="margin-left: 10px;">第${pageNum+1}页</span>`);
  
  console.log(pageNum+1)
  
  }
  
  tableData(pageNum)
  
  //点击页码或上一页和下一页
  
  function pagenation(yongshiyule178.com) {
  
  let len = $('ul li').length;
  
  let li = $('.page').find('li');
  
  li.map(function () {
  
  $(this).on('click', function () {
  
  let page = $(this)www.xianggelila2.com.text();
  
  pageNum = page - 1;//把当前点击的页码赋值给pageNum,这样再点击下一页或上一页的时候就在当前页码上--或++,获取到1的时候其实需要展示数组第0个数据
  
  tableData(pageNum)
  
  })
  
  })
  
  $('body'www.xiaomiyulezc.com ).on('click', '.nextPage', function () {//下一页
  
  if(pageNum +1 < pageTotal){
  
  pageNum++;
  
  }else{
  
  return
  
  }
  
  // console.log(pageNum+1)
  
  if (pageNum +1 == pageTotal) {
  
  pageNum = pageTotal -1;
  
  $('.pagePre').hide()
  
  }
  
  if (pageNum + 1 > 10) {//当页码大于10的时候就取消隐藏,注意:pageNum是数组下标所以要包括10
  
  $(`.page li:eq(${pageNum})`).show();
  
  $(`.page li:eq(${pageNum - 10})`).hide();
  
  $('.forntPagePre').remove()
  
  $('.page li:eq(0)').before(`<span class="forntPagePre" style="margin-left: 5px;">...</span>`)
  
  }
  
  tableData(pageNum)
  
  })
  
  $('body').on('click', '.upPage', function () {//上一页
  
  if (pageNum == 0) {//当pageNum等于12的时候阻止事件执行
  
  pageNum = 0
  
  return
  
  }
  
  pageNum--;
  
  if(pageTotal - (pageNum+1) >= 10){//总页数减去当前页数大于等于10的时候
  
  // console.log(pageNum + 1)
  
  $(`.page li:eq(${pageNum})`).show();
  
  $(`.page li:eq(${pageNum+10})`).hide();
  
  $('.pagePre').remove();
  
  $('.page .nextPage').before(`<span class="pagePre" style="margin-right: 5px;">...</span>`);
  
  }
  
  if(pageNum + 1 == 1){
  
  $('.forntPagePre').hide();
  
  }
  
  tableData(pageNum)
  
  })
  
  }
  
  pagenation()
  
  }
  
  page(5, 61, 1)
  
  ---------------------

转载于:https://www.cnblogs.com/qwangxiao/p/10213778.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值