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

纯js分页代码示例

以下是一个使用纯 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>纯 JS 分页示例</title>
  <style>
    .item {
      padding: 8px;
      border: 1px solid #ccc;
      margin-bottom: 4px;
    }

    .pagination {
      display: flex;
      justify-content: center;
      margin-top: 20px;
    }

    .pagination button {
      padding: 5px 10px;
      margin: 0 2px;
      border: 1px solid #ccc;
      background-color: #fff;
      cursor: pointer;
    }

    .pagination button.active {
      background-color: #007BFF;
      color: #fff;
      border-color: #007BFF;
    }
  </style>
</head>

<body>
  <div id="content"></div>
  <div class="pagination" id="pagination"></div>

  <script>
    // 要分页的数据
    const data = [];
    for (let i = 1; i <= 100; i++) {
      data.push(`项目 ${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 contentDiv = document.getElementById('content');
      contentDiv.innerHTML = '';
      pageData.forEach(item => {
        const div = document.createElement('div');
        div.className = 'item';
        div.textContent = item;
        contentDiv.appendChild(div);
      });
    }

    function renderPagination() {
      const totalPages = Math.ceil(data.length / itemsPerPage);
      const paginationDiv = document.getElementById('pagination');
      paginationDiv.innerHTML = '';

      for (let i = 1; i <= totalPages; i++) {
        const button = document.createElement('button');
        button.textContent = i;
        if (i === currentPage) {
          button.classList.add('active');
        }
        button.addEventListener('click', () => {
          currentPage = i;
          renderPage(currentPage);
          renderPagination();
        });
        paginationDiv.appendChild(button);
      }
    }

    // 初始渲染
    renderPage(currentPage);
    renderPagination();
  </script>
</body>

</html>

在上述示例中:

一、基础概念

  1. 数据切片
    • 通过 Array.prototype.slice 方法根据当前页码和每页显示数量从原始数据数组中获取要显示的部分数据。
  • 事件监听
    • 为分页按钮添加 click 事件监听器,当按钮被点击时更新当前页码并重新渲染页面内容和分页按钮。

二、优势

  1. 简单直观
    • 不依赖任何外部库,易于理解和实现。
  • 定制性强
    • 可以根据具体需求轻松修改样式、分页逻辑(如每页显示数量、特殊的分页样式等)。

三、应用场景

  1. 小型数据展示页面
    • 当需要在网页上显示少量数据(如几十到几百条)且希望有分页功能时,这种纯 JavaScript 实现的方式足够使用。
  • 学习示例
    • 对于初学者来说,是学习分页逻辑和相关 JavaScript 操作的好例子。

四、可能遇到的问题及解决方法

  1. 性能问题(数据量较大时)
    • 如果数据量非常大(例如数千条甚至更多),频繁地操作 DOM 可能会导致性能下降。
    • 解决方法:可以考虑使用虚拟列表技术,只渲染可视区域内的元素,减少 DOM 操作次数。
  • 兼容性问题
    • 在一些非常老旧的浏览器中,可能存在对某些 JavaScript 方法(如 slice)支持不佳的情况。
    • 解决方法:添加相应的兼容性代码或者使用 polyfill 来确保在所有目标浏览器中正常工作。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • JS 实现分页打印

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

    14.2K21
    领券