当前位置:首页 > JavaScript

用js实现翻页

2026-02-03 00:16:04JavaScript

使用 JavaScript 实现翻页功能

翻页功能通常用于分页显示数据,以下是几种常见的实现方法。

基础翻页逻辑

通过计算当前页码和每页显示的数据量,动态渲染内容。

let currentPage = 1;
const itemsPerPage = 5;
const data = [...]; // 你的数据数组

function renderPage(page) {
  const start = (page - 1) * itemsPerPage;
  const end = start + itemsPerPage;
  const pageData = data.slice(start, end);

  // 渲染 pageData 到页面
  console.log(pageData);
}

function nextPage() {
  if (currentPage * itemsPerPage < data.length) {
    currentPage++;
    renderPage(currentPage);
  }
}

function prevPage() {
  if (currentPage > 1) {
    currentPage--;
    renderPage(currentPage);
  }
}

动态生成分页按钮

根据数据总量动态生成分页按钮,并绑定点击事件。

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

  pagination.innerHTML = '';

  for (let i = 1; i <= totalPages; i++) {
    const btn = document.createElement('button');
    btn.textContent = i;
    btn.addEventListener('click', () => {
      currentPage = i;
      renderPage(currentPage);
    });
    pagination.appendChild(btn);
  }
}

带省略号的高级分页

对于大量数据,可以显示部分页码并用省略号表示隐藏的页码。

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

  // 总是显示第一页
  addPageButton(1);

  if (currentPage > 3) {
    pagination.appendChild(document.createTextNode('...'));
  }

  // 显示当前页附近的页码
  const start = Math.max(2, currentPage - 1);
  const end = Math.min(totalPages - 1, currentPage + 1);

  for (let i = start; i <= end; i++) {
    addPageButton(i);
  }

  if (currentPage < totalPages - 2) {
    pagination.appendChild(document.createTextNode('...'));
  }

  // 总是显示最后一页
  if (totalPages > 1) {
    addPageButton(totalPages);
  }
}

function addPageButton(page) {
  const btn = document.createElement('button');
  btn.textContent = page;
  if (page === currentPage) {
    btn.classList.add('active');
  }
  btn.addEventListener('click', () => {
    currentPage = page;
    renderPage(currentPage);
    createSmartPagination();
  });
  pagination.appendChild(btn);
}

无限滚动翻页

当用户滚动到页面底部时自动加载下一页内容。

window.addEventListener('scroll', () => {
  if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 500) {
    if (currentPage * itemsPerPage < data.length) {
      currentPage++;
      renderPage(currentPage);
    }
  }
});

使用 History API 的翻页

实现翻页时同时更新浏览器历史记录。

用js实现翻页

function changePage(page) {
  currentPage = page;
  renderPage(currentPage);
  window.history.pushState({page}, `Page ${page}`, `?page=${page}`);
}

window.addEventListener('popstate', (event) => {
  if (event.state?.page) {
    currentPage = event.state.page;
    renderPage(currentPage);
  }
});

这些方法可以根据具体需求选择或组合使用,实现不同风格的翻页功能。

标签: 翻页js
分享给朋友:

相关文章

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…