一直以来有许多兄弟问我分页怎么写,我今天就来给大家讲解下分页的简单技巧,不过兄弟们也知道我不怎么喜欢打字,喜欢打代码,话不多说,直接上代码,直接上注释,gogogo!!!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="./js/jquery-3.7.1.js"></script>
<style>
.data_content {
width: 60%;
margin-left: 20%;
display: flex;
flex-direction: column;
align-items: center;
background-color: antiquewhite;
}
.content_box {
margin: 10px 0;
padding: 10px;
border: 1px solid #ccc;
width: 80%;
display: flex;
justify-content: space-around;
}
.but_page {
display: flex;
justify-content: center;
margin-top: 20px;
}
.but_page button {
padding: 8px 16px;
margin: 0 5px;
background-color: #007bff;
color: #fff;
border: none;
cursor: pointer;
}
.but_page button:hover {
background-color: royalblue;
}
.twig {
line-height: 35px;
margin-left: 10px;
}
.page_datas {
margin-left: 500px;
margin-top: 15px;
}
.seek_box {
text-align: center;
margin-bottom: 30px;
}
</style>
</head>
<body>
<!-- 搜索框 -->
<div class="seek_box">
<input type="text" />
<button>搜索</button>
</div>
<!-- 存放数据 -->
<div class="data_content"></div>
<!-- 底部页码 -->
<div class="but_page"></div>
<!-- 页码跳转和每页数据 -->
<div class="page_datas">
<input type="number" class="href_but" />
<button onclick="buts(-3)">跳转</button>
<select name="" class="per_page">
<option value="10">每页10条数据</option>
<option value="5">每页5条数据</option>
<option value="15">每页15条数据</option>
</select>
</div>
<script>
//全局变量
let data;
let num = 10; //每页数据
let k = 0; //第几页
let k_all; //一共多少页
// 请求假数据
$.ajax({
type: "GET",
url: "js/new_file.json",
success: function(res) {
data = res;
console.log(data);
applyColours(0)
},
});
// 渲染函数
function applyColours(dat) {
k = dat;
if (k <= 0) {
k = 0;
} else if (k >= k_all) {
k = k_all - 1;
}
k_all = Math.ceil(data.length / num); //获取到总共多少页
//渲染内容
let str = '';
for (let i = k * num; i < (k + 1) * num; i++) {
if (data[i] == undefined) {
break;
}
str += `
<div class="content_box">
<div>${data[i].id}</div>
<div>${data[i].name}</div>
<div>${data[i].gender}</div>
<div>${data[i].content}</div>
<div>${data[i].age}</div>
</div>`;
}
$('.data_content').html(str);
//渲染按钮
let std = ``;
std += `<button onclick="buts(-1)">上一页</button>`
for (let i = 0; i < k_all; i++) {
std += `<button onclick="buts(${i})">${i+1}</button>`
}
std += `<button onclick="buts(-2)">下一页</button>`
std += `<div class="twig">共${data.length}条</div>`
std += `<div class="twig">共${k_all}页</div>`
std += `<div class="twig">当前第${k+1}页</div>`
$('.but_page').html(std);
$(".but_page button").eq(k + 1).css("background-color", "aquamarine")
}
// 点击按钮事件
function buts(datas) {
if (datas == -1) {
applyColours(k - 1);
} else if (datas == -2) {
applyColours(k + 1);
} else if (datas == -3) {
let number_value = $('.href_but').val();
console.log(number_value);
applyColours(number_value - 1);
} else {
applyColours(datas)
}
}
// 每页多少条数据
$('.per_page').on('change', function() {
let datas_value = $(this).val();
console.log(datas_value);
num = datas_value;
applyColours(0);
});
</script>
</body>
</html>