📅  最后修改于: 2023-12-03 15:07:09.890000             🧑  作者: Mango
本文将介绍如何使用Javascript编写一个分页反应猫鼬,该猫鼬可以根据数据量和每页显示数量自动创建分页,并且在点击页码时可以实现数据的跳转。本教程主要涉及Javascript语言的基础知识,如无基础可以先学习相关基础知识后再进行阅读。
为了创建分页反应猫鼬,我们需要先确定数据总量和每页显示的数据数量。然后根据这两个变量计算需要创建的页数,并动态生成页码html。每次点击页码时,猫鼬将根据当前页码计算需要显示的数据,并将其展示出来。
首先我们需要先创建HTML页面并设置好分页猫鼬的布局。
<div id="pagination"></div>
<ul id="data"></ul>
接下来我们需要编写Javascript代码来完成分页反应猫鼬的功能。
我们需要定义以下变量:
currentPage
:当前页码dataList
:存储数据的数组pageSize
:每页显示数据数量totalPage
:总页数// 定义变量
let currentPage = 1;
let dataList = [];
let pageSize = 10;
let totalPage = 0;
接下来,我们需要获取数据并存储到dataList数组中,这里我们使用假数据代替。实际使用时可通过Ajax获取数据。
// 获取数据
function getData() {
// 获取假数据并存储到dataList数组中
for(let i = 0; i < 100; i++) {
dataList.push(i + 1);
}
}
getData();
我们需要根据数据个数和每页显示数据数量计算总页数,并且针对较少数据进行隐藏多余页码。
// 计算总页数
function calculatePage() {
totalPage = Math.ceil(dataList.length / pageSize);
if(totalPage < 2) {
pagination.innerHTML = "";
return;
}
if(totalPage > 6) {
if(currentPage < 5) { // 当前页码小于5时,显示1-5,省略号不显示
for(let i = 1; i < 6; i++) {
createPagination(i);
}
createPagination(0); // 省略号
createPagination(totalPage); // 最后一页
} else if(currentPage > totalPage - 4) { // 当前页码大于总页数-4时,显示totalPage-4 - totalPage,省略号不显示
createPagination(1); // 第一页
createPagination(0); // 省略号
for(let i = totalPage - 4; i <= totalPage; i++) {
createPagination(i);
}
} else { // 当前页码在5~总页数-4之间时,显示1,省略号,当前页码-2 ~ 当前页码+2,省略号,最后一页
createPagination(1); // 第一页
createPagination(0); // 省略号
for(let i = currentPage - 2; i <= currentPage + 2; i++) {
createPagination(i);
}
createPagination(0); // 省略号
createPagination(totalPage); // 最后一页
}
} else { // 总页数小于等于6时,全部显示
for(let i = 1; i <= totalPage; i++) {
createPagination(i);
}
}
}
我们需要根据页数动态生成页码html,并为每个页码绑定点击事件。
// 创建页码html
function createPagination(i) {
let pageHtml = "";
let pagination = document.getElementById("pagination");
let className = "";
if(i === 0) {
pageHtml = "<span>...</span>";
className = "ellipsis";
} else {
pageHtml = "<a href='javascript:;'>"+i+"</a>";
}
if(i === currentPage) {
className = "active";
}
let page = document.createElement("li");
page.innerHTML = pageHtml;
page.classList.add(className);
page.onclick = function() {
if(i !== currentPage && i !== 0) {
currentPage = i;
showData();
}
}
pagination.appendChild(page);
}
根据当前页码我们需要算出当前页码需要展示的起始与结束位置,并将数据展示出来。
// 数据展示
function showData() {
let start = (currentPage - 1) * pageSize;
let end = start + pageSize;
end = Math.min(end, dataList.length);
let dataHtml = "";
for(let i = start; i < end; i++) {
dataHtml += "<li>"+dataList[i]+"</li>";
}
document.getElementById("data").innerHTML = dataHtml;
document.getElementById("pagination").innerHTML = "";
calculatePage();
}
calculatePage();
showData();
至此,我们已经完成了分页反应猫鼬的编写,该程序可根据数据量和每页显示数量自动生成分页,并且动态跳转显示数据。完整代码如下:
// 定义变量
let currentPage = 1;
let dataList = [];
let pageSize = 10;
let totalPage = 0;
// 获取数据
function getData() {
// 获取假数据并存储到dataList数组中
for(let i = 0; i < 100; i++) {
dataList.push(i + 1);
}
}
getData();
// 计算总页数
function calculatePage() {
totalPage = Math.ceil(dataList.length / pageSize);
if(totalPage < 2) {
pagination.innerHTML = "";
return;
}
if(totalPage > 6) {
if(currentPage < 5) { // 当前页码小于5时,显示1-5,省略号不显示
for(let i = 1; i < 6; i++) {
createPagination(i);
}
createPagination(0); // 省略号
createPagination(totalPage); // 最后一页
} else if(currentPage > totalPage - 4) { // 当前页码大于总页数-4时,显示totalPage-4 - totalPage,省略号不显示
createPagination(1); // 第一页
createPagination(0); // 省略号
for(let i = totalPage - 4; i <= totalPage; i++) {
createPagination(i);
}
} else { // 当前页码在5~总页数-4之间时,显示1,省略号,当前页码-2 ~ 当前页码+2,省略号,最后一页
createPagination(1); // 第一页
createPagination(0); // 省略号
for(let i = currentPage - 2; i <= currentPage + 2; i++) {
createPagination(i);
}
createPagination(0); // 省略号
createPagination(totalPage); // 最后一页
}
} else { // 总页数小于等于6时,全部显示
for(let i = 1; i <= totalPage; i++) {
createPagination(i);
}
}
}
// 创建页码html
function createPagination(i) {
let pageHtml = "";
let pagination = document.getElementById("pagination");
let className = "";
if(i === 0) {
pageHtml = "<span>...</span>";
className = "ellipsis";
} else {
pageHtml = "<a href='javascript:;'>"+i+"</a>";
}
if(i === currentPage) {
className = "active";
}
let page = document.createElement("li");
page.innerHTML = pageHtml;
page.classList.add(className);
page.onclick = function() {
if(i !== currentPage && i !== 0) {
currentPage = i;
showData();
}
}
pagination.appendChild(page);
}
// 数据展示
function showData() {
let start = (currentPage - 1) * pageSize;
let end = start + pageSize;
end = Math.min(end, dataList.length);
let dataHtml = "";
for(let i = start; i < end; i++) {
dataHtml += "<li>"+dataList[i]+"</li>";
}
document.getElementById("data").innerHTML = dataHtml;
document.getElementById("pagination").innerHTML = "";
calculatePage();
}
calculatePage();
showData();
至此,我们已经学习了如何使用Javascript编写一个简单的分页反应猫鼬,并且将其运用到了页面中。这个程序很简单,但已经完成了一个最基本的分页功能,在实际开发中可以根据需求进行扩展和改进,例如添加数据刷新、翻页动画等功能。