当前位置:首页 > 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 的翻页

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

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
分享给朋友:

相关文章

vue实现翻页效果

vue实现翻页效果

Vue实现翻页效果的方法 使用v-for和计算属性 通过计算属性动态计算当前页显示的数据,结合v-for渲染分页内容。定义currentPage和pageSize控制分页逻辑。 <templ…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Ja…

vue翻页实现

vue翻页实现

Vue 翻页实现方法 在 Vue 中实现翻页功能通常需要结合分页组件和数据处理逻辑。以下是几种常见的实现方式: 使用 Element UI 分页组件 Element UI 提供了现成的分页组件 &…