JS 分页器
<!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>
</head>
<body>
<div class="box">
<ul class="newsList">
</ul>
<!-- 分页器 -->
<div class="pageLists">
<button id="first">首页</button>
<button id="pageList_prev">上一页</button>
<div class="pageList"></div>
<button id="pageList_next">下一页</button>
<button id="last">尾页</button>
</div>
</div>
</body>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 600px;
height: 400px;
margin: 100px auto;
}
.newsList {
width: 600px;
height: 350px;
background-color: antiquewhite;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.newsList li {
height: 80px;
width: 500px;
list-style: none;
background-color: skyblue;
}
.newsList li span:nth-of-type(1) {
font-size: 30px;
font-weight: 600;
}
.pageLists {
width: 600px;
height: 50px;
display: flex;
justify-content: space-around;
align-items: center;
margin-top: 40px;
}
.pageLists button {
width: 50px;
height: 30px;
border: 1px solid #ccc;
box-sizing: border-box;
cursor: pointer;
}
.pageList {
width: 300px;
height: 50px;
display: flex;
justify-content: space-around;
align-items: center;
}
.pageList a {
display: block;
text-align: center;
line-height: 30px;
width: 30px;
height: 30px;
box-sizing: border-box;
border: 1px solid #ccc;
cursor: pointer;
}
.pageActive {
background-color: skyblue;
color: #fff;
}
</style>
<script>
const news = [
{
index: '1',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '1',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '1',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '1',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '2',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '2',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '2',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '2',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '3',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '3',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '3',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '3',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '4',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '4',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '4',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '4',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '5',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '5',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '5',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
{
index: '5',
con: '啦啦啦啦啦啦啦啦绿绿绿啦啦啦啦啦',
time: '2022-2-2'
},
];
// conBox:要渲染的盒子名
// pageBox:要渲染分页器的盒子名
// dataList:数组名
// count:每一页要多少条数据
function paging(conBox,pageBox,dataList,count) {
var newsList = document.querySelector(conBox)// 获取内容部分
var pageList = document.querySelector(pageBox);// 获取分页器部分
var pageCount = Math.ceil(dataList.length / count);// 计算有多少页
var newsArr = [];// 每一页所展示的数据
let onePage = 1;// 根据值显示每页数据
// 渲染新闻数据
let render = function () {
newsList.innerHTML = '';
newsArr = dataList.slice((onePage - 1) * 4, 4 * onePage)
newsArr.forEach((item, index) => {
newsList.innerHTML +=
`
<li>
<span>${item.index}</span>
<span>${item.time}</span>
<p>${item.con}</p>
</li>
`
})
}
// 初始化
render();
// 初始化分页器样式
for (let i = 1; i <= pageCount; i++) {
pageList.innerHTML += '<a>' + i + '</a>'
}
let aList = pageList.querySelectorAll('a');
// 页面刚进来时第一页高亮
aList[onePage - 1].classList.add('pageActive')
// 点击分页器时高亮
aList.forEach((item, index) => {
item.onclick = function () {
for (let i = 0; i < aList.length; i++) {
aList[i].classList.remove('pageActive')
}
this.classList.add('pageActive')
onePage = index + 1
render();
}
})
// 上一页和下一页
var next = document.getElementById("pageList_next");
var prev = document.getElementById("pageList_prev");
let changePages = function () {
for (let i = 0; i < aList.length; i++) {
aList[i].classList.remove('pageActive')
}
aList[onePage - 1].classList.add('pageActive')
}
// 上一页
prev.onclick = function () {
if (onePage <= 1) {
return
} else {
onePage = onePage - 1
changePages()
render()
}
}
// 下一页
next.onclick = function () {
if (onePage >= aList.length) {
return
}
onePage = onePage + 1
changePages()
render()
}
// 首页和尾页
var first = document.getElementById("first")
var last = document.getElementById("last")
// 首页
first.onclick = function () {
if (onePage <= 1) {
return
}
onePage = 1
changePages()
render()
}
// 尾页
last.onclick = function () {
if (onePage >= pageCount) {
return
}
onePage = pageCount
changePages()
render()
}
}
// 分页
paging('.newsList','.pageList',news, 4)
</script>
</html>
浙公网安备 33010602011771号