在原生 JavaScript 中实现分页,主要涉及到以下几个基础概念:
基础概念:
优势:
类型: 常见的有基于数组索引的分页和基于数据库查询的分页(在后端实现),这里说的是前端基于数组索引的分页。
应用场景: 适用于数据量不是特别巨大,且在前端进行处理和展示的情况,比如一个简单的列表展示。
以下是一个原生 JavaScript 实现分页的示例代码:
<!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>
在上述代码中:
renderPage
函数用于根据当前页码渲染对应的数据到页面上。renderPagination
函数用于生成并渲染分页按钮。如果遇到分页数据显示不正确或者分页按钮不更新的问题,可能是以下原因:
解决方法就是仔细检查相关的计算逻辑和函数调用,确保在页码变化时正确地重新渲染数据和分页按钮。
腾讯云数智驱动中小企业转型升级·系列主题活动
Tencent Serverless Hours 第15期
第四期Techo TVP开发者峰会
第四期Techo TVP开发者峰会
云+社区沙龙online [新技术实践]
腾讯云数据湖专题直播
云+社区沙龙online [国产数据库]
云+社区沙龙online [国产数据库]
小程序·云开发官方直播课(数据库方向)
领取专属 10元无门槛券
手把手带您无忧上云