141 lines
4.7 KiB
JavaScript
141 lines
4.7 KiB
JavaScript
function generatePagination(pagination, total, pageSize, pageIndex, cd) {
|
||
|
||
/*
|
||
需要一个<ul id="pagination"></ul>标签
|
||
total; // 总数据的数量
|
||
pageSize; // 一页显示数量
|
||
pageIndex; // 当前页
|
||
*/
|
||
let totalPage = Math.ceil(total / pageSize) || 1; // 总页数
|
||
function initPagination() {
|
||
let pageHtml; // 按钮内容
|
||
let prevButton = `<li class='list-items lbl btnPrev'>‹</li>`; // 向左
|
||
let nextButton = `<li class='list-items lbr btnNext'>›</li>`; // 向右
|
||
let firstPage = `<li class='list-items' pagenumber=1>1</li>`; // 第一页
|
||
let lastPage = `<li class='list-items' pagenumber=${totalPage}>${totalPage}</li>`; // 最后一页
|
||
let leftOmitPage = `<li class='list-items btnGoLeft'>...</li>`; // 省略号
|
||
let rightOmitPage = `<li class='list-items btnGoRight'>...</li>`; // 省略号
|
||
let pageTips = `<div style='line-height:20px;' class='pageTips'>共 ${total} 条</div > `;
|
||
pageHtml = prevButton; // 添加向左的按钮
|
||
|
||
/* 生成页数 */
|
||
if (totalPage <= 6) {
|
||
// 总页数小于等于10页全部显示
|
||
for (let i = 1; i <= totalPage; i++) {
|
||
pageHtml += `<li class='list-items' pagenumber=${i}>${i}</li>`;
|
||
}
|
||
}
|
||
|
||
//页码大于5页的情况 当前页大于5的话,并且页码是大于11页的
|
||
else if (pageIndex <= 4) {
|
||
//总页数大于10且当前页远离总页数
|
||
for (let i = 1; i <= 5; i++) {
|
||
pageHtml += `<li class='list-items' pagenumber=${i}>${i}</li>`;
|
||
}
|
||
pageHtml += rightOmitPage;
|
||
pageHtml += lastPage;
|
||
} else if (pageIndex > totalPage - 3) {
|
||
//pageindex>=9 的时候并且页数》10页的时候
|
||
|
||
// console.log('totalPage - 2:' + (totalPage - 3));
|
||
// console.log('pageindex:' + pageIndex);
|
||
//总页数大于10且当前页接近总页数
|
||
pageHtml += firstPage;
|
||
pageHtml += leftOmitPage;
|
||
for (let i = totalPage - 4; i <= totalPage; i++) {
|
||
pageHtml += `<li class='list-items' pagenumber=${i}>${i}</li>`;
|
||
}
|
||
} else {
|
||
//除开上面两个情况 当前页在中间
|
||
pageHtml += firstPage;
|
||
pageHtml += leftOmitPage;
|
||
for (let i = pageIndex - 1; i <= pageIndex + 1; i++) {
|
||
pageHtml += `<li class='list-items' pagenumber=${i}>${i}</li>`;
|
||
}
|
||
pageHtml += rightOmitPage;
|
||
pageHtml += lastPage;
|
||
}
|
||
pageHtml += nextButton; // 添加向右的按钮
|
||
pageHtml += pageTips;
|
||
pagination.innerHTML = pageHtml;
|
||
pagination
|
||
.querySelector("li[pagenumber='" + pageIndex + "']")
|
||
.classList.add('active');
|
||
|
||
let pagenumberBtns = pagination.querySelectorAll('li[pagenumber]'); // 获取所有的页码按钮
|
||
|
||
/* 点击页码按钮进行翻页 */
|
||
pagenumberBtns.forEach(function (elements) {
|
||
elements.onclick = function () {
|
||
pageIndex = Number(this.innerHTML); // 当前页
|
||
pagination
|
||
.querySelector("li[pagenumber='" + pageIndex + "']")
|
||
.classList.add('active');
|
||
pageHtml = ``;
|
||
initPagination()
|
||
cd && cd(pageIndex)
|
||
};
|
||
});
|
||
|
||
/* 向左翻页 */
|
||
pagination.getElementsByClassName('btnPrev')[0].addEventListener('click', function () {
|
||
if (pageIndex > 1) {
|
||
pageIndex--;
|
||
pageHtml = '';
|
||
initPagination();
|
||
cd && cd(pageIndex)
|
||
}
|
||
});
|
||
|
||
/* 向右翻页 */
|
||
pagination.getElementsByClassName('btnNext')[0].addEventListener('click', function () {
|
||
if (pageIndex < totalPage) {
|
||
pageIndex++;
|
||
pageHtml = '';
|
||
initPagination()
|
||
cd && cd(pageIndex)
|
||
}
|
||
});
|
||
|
||
/* 向左快速翻页 */
|
||
let btnGoLeft = pagination.getElementsByClassName('btnGoLeft')[0];
|
||
if (btnGoLeft) {
|
||
btnGoLeft.addEventListener('mouseenter', function () {
|
||
this.innerHTML = '<';
|
||
});
|
||
btnGoLeft.addEventListener('mouseleave', function () {
|
||
this.innerHTML = '...';
|
||
});
|
||
btnGoLeft.addEventListener('click', function () {
|
||
if (pageIndex > 10) {
|
||
pageIndex -= 10;
|
||
pageHtml = '';
|
||
initPagination();
|
||
cd && cd(pageIndex)
|
||
}
|
||
});
|
||
}
|
||
|
||
/* 向右快速翻页 */
|
||
let btnGoRight = pagination.getElementsByClassName('btnGoRight')[0];
|
||
if (btnGoRight) {
|
||
btnGoRight.addEventListener('mouseenter', function () {
|
||
this.innerHTML = '>';
|
||
});
|
||
btnGoRight.addEventListener('mouseleave', function () {
|
||
this.innerHTML = '...';
|
||
});
|
||
btnGoRight.addEventListener('click', function () {
|
||
if (pageIndex < totalPage - 10) {
|
||
pageIndex += 10;
|
||
pageHtml = '';
|
||
initPagination();
|
||
cd && cd(pageIndex)
|
||
}
|
||
});
|
||
}
|
||
}
|
||
initPagination();
|
||
}
|
||
|
||
export { generatePagination } |