首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

原生js实现分页

在原生 JavaScript 中实现分页,主要涉及到以下几个基础概念:

基础概念

  1. 数据集合:要分页展示的数据数组。
  2. 每页显示数量:指定每个页面上显示的数据条数。
  3. 当前页码:表示用户当前查看的页面编号。

优势

  1. 提升用户体验,避免一次性加载大量数据导致页面卡顿。
  2. 更好地控制数据的展示和管理。

类型: 常见的有基于数组索引的分页和基于数据库查询的分页(在后端实现),这里说的是前端基于数组索引的分页。

应用场景: 适用于数据量不是特别巨大,且在前端进行处理和展示的情况,比如一个简单的列表展示。

以下是一个原生 JavaScript 实现分页的示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .page-item {
      display: inline-block;
      padding: 5px 10px;
      border: 1px solid #ccc;
      margin-right: 5px;
      cursor: pointer;
    }

    .page-item.active {
      background-color: #007bff;
      color: white;
    }
  </style>
</head>

<body>
  <ul id="dataList"></ul>
  <div id="pagination"></div>

  <script>
    const data = []; // 假设这是要分页的数据数组
    for (let i = 1; i <= 100; i++) {
      data.push(`Item ${i}`);
    }

    const itemsPerPage = 10;
    let currentPage = 1;

    function renderPage(page) {
      const start = (page - 1) * itemsPerPage;
      const end = start + itemsPerPage;
      const pageData = data.slice(start, end);
      const dataList = document.getElementById('dataList');
      dataList.innerHTML = '';
      pageData.forEach(item => {
        const li = document.createElement('li');
        li.textContent = item;
        dataList.appendChild(li);
      });
    }

    function renderPagination() {
      const totalPages = Math.ceil(data.length / itemsPerPage);
      const pagination = document.getElementById('pagination');
      pagination.innerHTML = '';
      for (let i = 1; i <= totalPages; i++) {
        const pageItem = document.createElement('span');
        pageItem.classList.add('page-item');
        pageItem.textContent = i;
        if (i === currentPage) {
          pageItem.classList.add('active');
        }
        pageItem.addEventListener('click', () => {
          currentPage = i;
          renderPage(currentPage);
          renderPagination();
        });
        pagination.appendChild(pageItem);
      }
    }

    renderPage(currentPage);
    renderPagination();
  </script>
</body>

</html>

在上述代码中:

  • 首先创建了一个包含 100 个数据项的数组。
  • renderPage 函数用于根据当前页码渲染对应的数据到页面上。
  • renderPagination 函数用于生成并渲染分页按钮。

如果遇到分页数据显示不正确或者分页按钮不更新的问题,可能是以下原因:

  1. 计算起始和结束索引的逻辑有误,导致切片的数据范围不对。
  2. 更新当前页码后,没有重新调用渲染函数来更新页面显示。

解决方法就是仔细检查相关的计算逻辑和函数调用,确保在页码变化时正确地重新渲染数据和分页按钮。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 原生js版分页插件

    之前我在自己的博客里发表了一篇用angularJs自定义指令实现的分页插件,今天简单改造了一下,改成了原生JavaScript版本的分页插件,可以自定义一些简单配置,特此记录下来。...自己实现的简单小插件,把分页部分的css样式写在了插件paging.js中,以动态创建style标签的方式,加入到页面中。...1、代码部分: 1.1、插件 - paging.js 分页的css样式写在插件中,动态创建style标签,加载到页面中。在该js中有一个Paging构造函数。...在构造函数中有两个参数,第一个是自定义分页参数的js对象,第二个是回调函数。 在构造函数中有一个initPage()方法。用来渲染分页DOM结构。...DOCTYPE html> js版分页插件 <style

    32.6K121

    JS 实现分页打印

    在调用 window.print() 时,可以实现打印效果,但内容太多时要进行分页打印。...其中Auto是默认值,只有在有需要时,才需设定分页符号 (Page breaks)。...page-break-before 若设定成left,则会插入分页符号,直到指定的组件出现在一个左边的空白页上。...page-break-before 若设定成right,则会插入分页符号,直到指定的组件出现在一个右边的空白页上。 page-break-after 属性会将分页符号加在指定组件后,而非之前。...如果必要则在元素前插入分页符 always 在元素前插入分页符 avoid 避免在元素前插入分页符 left 在元素之前足够的分页符,一直到一张空白的左页为止 right 在元素之前足够的分页符,一直到一张空白的右页为止

    14.2K21
    领券