JS简单实现分页显示

完整代码源码可以在这里下载

1.在 HTML文件建立列表目标节点和翻页器目标节点

<body>
<!--页面控制器 -->
  <div id="nav"></div>
  <!--列表显示 -->
  <div class="root" id="target"></div>
  <!--导入js-->
  <script src="./test.js"></script>
</body>

2.JS

分页控制器函数封装

/**
 * 
 * @param {列表渲染目标节点} listTarget 
 * @param {页面控制器目标节点} navTarget 
 * @param {列表项渲染函数} renderFunc 
 * @param {每页项数} pageSize 
 * @param {列表数据源} dataSourse 
 */
function renderPageNav(listTarget, navTarget, renderFunc, pageSize, dataSourse) {
  // 总页数
  const pageLength = Math.ceil(dataSourse.length / pageSize);

  //页面控制器
  const pageController = {
    cur: 0,
    toPage: function (index) {
      listTarget.innerHTML = '';
      for (let i = (index - 1) * pageSize; i < index * pageSize; i++) {
        if (dataSourse[i]) {
          listTarget.appendChild(renderFunc(dataSourse[i]));
        } else {
          break;
        }
      }
      this.cur = index;
      console.log(this.cur)
    },
    next: function () { this.toPage(this.cur + 1) },
    prev: function () { this.toPage(this.cur - 1) },
    start: function () { this.toPage(1) },
    end: function () { this.toPage(pageLength) }
  }
  // 页码按钮渲染
  const pageBTN = index => {
    const btn = document.createElement('b');
    btn.innerHTML = index;
    btn.onclick = () => pageController.toPage(index);
    return btn
  };

  // 第一页按钮
  const startBTN = document.createElement('b');
  startBTN.innerHTML = '《';
  startBTN.onclick = () => {
    pageController.start()
  }
  navTarget.appendChild(startBTN)

  // 上一页按钮
  const prevBTN = document.createElement('b');
  prevBTN.innerHTML = '<';
  prevBTN.onclick = () => {
    if (pageController.cur != 1)
      pageController.prev()
  }
  navTarget.appendChild(prevBTN)

  // 页面跳转按钮 
  const page = document.createElement('span');
  for (let i = 1; i <= pageLength; i++) {
    page.appendChild(pageBTN(i))
  }

  navTarget.appendChild(page)

  // 下一页按钮
  const nextBTN = document.createElement('b');
  nextBTN.innerHTML = '>';
  nextBTN.onclick = () => {
    if (pageController.cur != pageLength) {
      pageController.next()
    }
  }
  navTarget.appendChild(nextBTN)
  // 尾页按钮
  const endBTN = document.createElement('b');
  endBTN.innerHTML = '》';
  endBTN.onclick = () => {
    if (pageController.cur != pageLength) {
      pageController.end()
    }
  }
  navTarget.appendChild(endBTN)

}

列表项渲染函数

//渲染单个Item
function renderItem(item) {
  const aItem = document.createElement("div");
  const inner = `<div class='card'>
  <p class="card__text"> ${item.desc} </p>
  </div>`;
  aItem.innerHTML = inner;
  return aItem;
}
// 这里存后台发来的数据
var data = [
  {
    desc: "11111"
  },
  {
    desc: "22222"
  },
  {
    desc: "3333"
  },
  {
    desc: "44444"
  },
  {
    desc: "55555"
  },
  {
    desc: "66666"
  },
  {
    desc: "77777"
  },
  {
    desc: "8888"
  },
  {
    desc: "9999"
  },
  {
    desc: "aaaaa"
  }
];
// 列表渲染目标节点
const listTarget = document.querySelector("#target");
// 导航栏渲染目标节点
const navTarget = document.querySelector("#nav");

运行分页器函数

renderPageNav(listTarget, navTarget, renderItem, 3, data);

转载于:https://www.cnblogs.com/YooHoeh/p/10426123.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 HTML 分页显示数据的代码示例: ```html <!DOCTYPE html> <html> <head> <title>分页</title> </head> <body> <table> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> </tr> </thead> <tbody id="data"> <!-- 数据将通过 JavaScript 动态加载 --> </tbody> </table> <div id="pagination"> <!-- 分页按钮将通过 JavaScript 动态添加 --> </div> <script> var currentPage = 1; // 当前页面 var pageSize = 10; // 每页显示的数量 // 模拟的数据 var data = [ { name: '张三', age: 20, gender: '男' }, { name: '李四', age: 25, gender: '女' }, { name: '王五', age: 30, gender: '男' }, { name: '赵六', age: 35, gender: '女' }, { name: '钱七', age: 40, gender: '男' }, { name: '孙八', age: 45, gender: '女' }, { name: '周九', age: 50, gender: '男' }, { name: '吴十', age: 55, gender: '女' }, { name: '郑十一', age: 60, gender: '男' }, { name: '陈十二', age: 65, gender: '女' }, { name: '黄十三', age: 70, gender: '男' }, { name: '林十四', age: 75, gender: '女' }, { name: '郭十五', age: 80, gender: '男' }, { name: '何十六', age: 85, gender: '女' }, { name: '唐十七', age: 90, gender: '男' }, { name: '许十八', age: 95, gender: '女' }, { name: '冯十九', age: 100, gender: '男' }, { name: '任二十', age: 105, gender: '女' } ]; // 加载指定页数的数据 function loadData(page) { var start = (page - 1) * pageSize; var end = start + pageSize; var html = ''; for (var i = start; i < end && i < data.length; i++) { html += '<tr>'; html += '<td>' + data[i].name + '</td>'; html += '<td>' + data[i].age + '</td>'; html += '<td>' + data[i].gender + '</td>'; html += '</tr>'; } document.getElementById('data').innerHTML = html; } // 初始化分页按钮 function initPagination() { var totalPages = Math.ceil(data.length / pageSize); var html = ''; for (var i = 1; i <= totalPages; i++) { html += '<button onclick="changePage(' + i + ')">' + i + '</button>'; } document.getElementById('pagination').innerHTML = html; } // 切换分页 function changePage(page) { currentPage = page; loadData(currentPage); } // 初始化页面 loadData(currentPage); initPagination(); </script> </body> </html> ``` 该示例中,我们使用了一些简单的 JavaScript 代码来实现分页。我们先定义了一个 `data` 数组,其中包含了 20 条学生信息,然后定义了 `currentPage` 和 `pageSize` 变量来表示当前页码和每页显示的数量。在 `loadData` 函数中,我们通过计算开始和结束索引来加载指定页数的数据,并将其渲染到表格中。在 `initPagination` 函数中,我们通过计算总页数来初始化分页按钮,并在点击按钮时切换分页。最后,在页面加载时,我们调用 `loadData` 和 `initPagination` 函数来初始化页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值