当前位置:首页 > JavaScript

js实现分页代码

2026-04-04 02:41:41JavaScript

基础分页实现

通过计算总页数和当前页数据范围实现基础分页功能:

function paginate(items, currentPage = 1, perPage = 10) {
  const totalPages = Math.ceil(items.length / perPage)
  const offset = (currentPage - 1) * perPage
  const paginatedItems = items.slice(offset, offset + perPage)

  return {
    currentPage,
    perPage,
    total: items.length,
    totalPages,
    data: paginatedItems
  }
}

// 使用示例
const data = Array.from({length: 45}, (_,i) => i+1)
console.log(paginate(data, 2, 10))

分页组件封装

封装可复用的分页组件类:

js实现分页代码

class Paginator {
  constructor(items, options = {}) {
    this.items = items
    this.perPage = options.perPage || 10
    this.currentPage = options.currentPage || 1
  }

  get totalPages() {
    return Math.ceil(this.items.length / this.perPage)
  }

  get currentData() {
    const offset = (this.currentPage - 1) * this.perPage
    return this.items.slice(offset, offset + this.perPage)
  }

  nextPage() {
    if (this.currentPage < this.totalPages) this.currentPage++
    return this
  }

  prevPage() {
    if (this.currentPage > 1) this.currentPage--
    return this
  }

  goToPage(page) {
    if (page >= 1 && page <= this.totalPages) {
      this.currentPage = page
    }
    return this
  }
}

// 使用示例
const pager = new Paginator(data, {perPage: 5})
console.log(pager.currentData)
pager.nextPage()
console.log(pager.currentData)

前端UI分页实现

结合DOM操作的分页控件实现:

js实现分页代码

function renderPagination(container, paginator) {
  container.innerHTML = `
    <div class="pagination">
      <button class="prev" ${paginator.currentPage === 1 ? 'disabled' : ''}>上一页</button>
      ${Array.from({length: paginator.totalPages}, (_, i) => `
        <button class="page ${i+1 === paginator.currentPage ? 'active' : ''}">${i+1}</button>
      `).join('')}
      <button class="next" ${paginator.currentPage === paginator.totalPages ? 'disabled' : ''}>下一页</button>
    </div>
  `

  container.querySelector('.prev').addEventListener('click', () => {
    paginator.prevPage()
    renderPagination(container, paginator)
    updateDataView(paginator.currentData)
  })

  container.querySelector('.next').addEventListener('click', () => {
    paginator.nextPage()
    renderPagination(container, paginator)
    updateDataView(paginator.currentData)
  })

  container.querySelectorAll('.page').forEach(btn => {
    btn.addEventListener('click', () => {
      paginator.goToPage(parseInt(btn.textContent))
      renderPagination(container, paginator)
      updateDataView(paginator.currentData)
    })
  })
}

function updateDataView(data) {
  document.getElementById('data-container').innerHTML = 
    data.map(item => `<div class="item">${item}</div>`).join('')
}

异步数据分页

处理API返回的分页数据:

async function fetchPaginatedData(url, page = 1) {
  const response = await fetch(`${url}?page=${page}`)
  const { data, meta } = await response.json()

  return {
    data,
    currentPage: meta.current_page,
    lastPage: meta.last_page,
    total: meta.total
  }
}

// 使用示例
fetchPaginatedData('https://api.example.com/items', 2)
  .then(result => {
    console.log(result.data)
    renderPagination(document.getElementById('pagination'), {
      currentPage: result.currentPage,
      totalPages: result.lastPage,
      // ...其他分页方法
    })
  })

分页样式优化

添加基础CSS样式:

.pagination {
  display: flex;
  gap: 5px;
  margin-top: 20px;
}

.pagination button {
  padding: 5px 10px;
  border: 1px solid #ddd;
  background: white;
  cursor: pointer;
}

.pagination button.active {
  background: #007bff;
  color: white;
  border-color: #007bff;
}

.pagination button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

标签: 分页代码
分享给朋友:

相关文章

css网页制作代码

css网页制作代码

CSS网页制作基础代码 以下是一些常用的CSS代码片段,可用于网页制作的基本样式设置: 全局样式重置 * { margin: 0; padding: 0; box-sizing: bo…

网页表格制作css代码

网页表格制作css代码

基础表格样式 使用CSS为HTML表格添加基础样式,如边框、间距和背景色: table { width: 100%; border-collapse: collapse; margin:…

vue实现分页条数

vue实现分页条数

Vue 实现分页条数控制 在 Vue 中实现分页条数控制通常需要结合分页组件和后端 API 支持。以下是几种常见的实现方式: 使用 Element UI 的分页组件 Element UI 提供了强大…

vue page 实现分页

vue page 实现分页

实现 Vue 分页功能的方法 使用 Element UI 的分页组件 安装 Element UI 后,可以直接使用 el-pagination 组件实现分页功能。 <template>…

用vue实现分页

用vue实现分页

使用Vue实现分页功能 分页是Web应用中常见的功能,可以通过Vue结合计算属性和事件处理实现。以下是实现分页的核心步骤: 数据准备 定义数据模型,包括当前页码、每页显示数量和总数据列表: dat…

vue实现网页分页

vue实现网页分页

Vue 实现网页分页的方法 使用计算属性实现分页 在 Vue 中可以通过计算属性对数据进行分页处理。定义一个 currentPage 和 pageSize,利用计算属性返回当前页的数据。 data(…