使用方法
renderPage函数传入 currentPage,totalPage,showPageNum,这个函数会计算开始渲染的页码和结束渲染的页码。计算完成后会调用performRender函数,performRender接收开始渲染的页码和结束渲染的页码以及当前页,在这个函数中我们需要编写操控Dom元素的逻辑。
源代码
function renderPage(currentPage
,totalPage
,showPageNum
) {
let startPage
, endPage
, minus
, plus
if (showPageNum
% 2 === 0) {
minus
= showPageNum
/ 2
plus
= minus
- 1
} else {
minus
= Math
.floor(showPageNum
/ 2)
plus
= minus
}
if (totalPage
< showPageNum
) {
startPage
= 1
endPage
= totalPage
} else if (currentPage
- minus
< 1) {
startPage
= 1;
endPage
= showPageNum
} else if (currentPage
+ plus
> totalPage
) {
startPage
= totalPage
- (showPageNum
- 1);
endPage
= totalPage
;
} else {
startPage
= currentPage
- minus
;
endPage
= currentPage
+ plus
;
}
performRender(startPage
, endPage
, currentPage
)
}
function performRender(startPage
,endPage
,currentPage
) {
let str
= ''
for (let i
= startPage
; i
<= endPage
; i
++) {
if (i
=== currentPage
) {
str
+= i
+ "* "
} else {
str
+= i
+ " "
}
}
console
.log(str
)
}
function performRender(startPage
,endPage
,currentPage
) {
let str
= ''
for (let i
= startPage
; i
<= endPage
; i
++) {
if (i
=== currentPage
) {
str
+= i
+ "* "
} else {
str
+= i
+ " "
}
}
console
.log(str
)
}
测试及结果
renderPage(0,10,6)
renderPage(1,10,6)
renderPage(2,10,6)
renderPage(3,10,6)
renderPage(4,10,6)
renderPage(5,10,6)
renderPage(6,10,6)
renderPage(7,10,6)
renderPage(8,10,6)
renderPage(9,10,6)
renderPage(10,10,6)
renderPage(11,10,6)
console
.log("-------------")
renderPage(0,10,5)
renderPage(1,10,5)
renderPage(2,10,5)
renderPage(3,10,5)
renderPage(4,10,5)
renderPage(5,10,5)
renderPage(6,10,5)
renderPage(7,10,5)
renderPage(8,10,5)
renderPage(9,10,5)
renderPage(10,10,5)
renderPage(11,10,5)
结果