原生JS分页代码实现分页功能(在已有HTML的基础上)
•
2024-02-20
•
文章类别:
JavaScript
•
阅读量:423
本文介绍使用原生 JavaScript 实现分页功能,该功能的实现是在已有HTML结构的基础上,而不是使用 URL 的 page 参数实现分页。
如果你要实现从处理JS数据数据生成HTML,然后再使用原生JS实现分页功能请查看:原生JS实现分页功能完整代码
使用原生 JS 实现分页功能功能的步骤:
- 基于已有HTML结构
- 使用原生JS实现分页功能
JS分页效果图
已有HTML结构
在HTML文件中一个<div class="pa-pg">
表示一个页面。本例中使用了Bootstrap CSS 类,方便进行HTML元素的布局。默认显示第一个页面(使用d-block
Bootstrap CSS定义显示页面),隐藏其他的页面(使用d-none
Bootstrap CSS定义隐藏页面)
HTML具体内容如下:
<div id="pagedArticle" class="paged-article container d-flex flex-column custom-padding">
<div class="pa-pg d-block">
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">PhpStorm破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">原生JS实现分页功能</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">WebStorm破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">IntelliJ IDEA破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">JavaScript为HTML元素删除CSS</h3>
<p>anxin</p></div>
</div>
<div class="pa-pg d-none">
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">JavaScript为HTML元素添加CSS</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Markdown代码中进行缩进和换行</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Javascript为元素添加事件监听器</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Pycharm Pro破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">GoLand破解版下载</h3>
<p>anxin</p></div>
</div>
<div class="pa-pg d-none">
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">RubyMine破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Adobe Acrobat Pro破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">DataSpell破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Adobe XD CC破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Rider破解版下载</h3>
<p>anxin</p></div>
</div>
<div class="pa-pg d-none">
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">网站内容如何使必应快速收录:向Bing提交链接</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">网站内容如何使百度快速收录:向百度提交链接 </h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">FreeBSD 13使用PIP包安装 Let's Encrypt
Certbot为Apache启用Https</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Ubuntu 如何安装KDE Plasma桌面环境</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">网站中使用本地文件加载Font Awesome 6字体图标</h3>
<p>anxin</p></div>
</div>
<div id="pa-pn" class="pa-pn text-center mt-2">
<i class="pa-pn-num active">1</i>
<i class="pa-pn-num">2</i>
<i class="pa-pn-num">3</i>
<i class="pa-pn-num">4</i>
</div>
</div>
使用的自定义的CSS代码
JS分页代码中除了使用Bootstrap CSS类外,使用到的自定义 CSS 代码:
.custom-padding {
padding: 50px 200px;
}
.pa-pn-num {
cursor: pointer;
font-size: 16px;
font-style: normal;
margin: 0 5px;
display: inline-block;
text-align: center;
height: 28px;
line-height: 28px;
width: 28px;
border: 1px solid #222;
border-radius: 17px;
background: #222;
color: #fff;
}
.pa-pn-num:hover {
background: #f4645f;
border: 0;
}
.pa-pn-num.active, .pa-pn-num.active:hover {
background: #fff;
color: #222;
border: 1px solid #222;
}
原生JS分页代码
基于已有的HTML,只需实现当点击分页的页码时,显示对应的<div class="pa-pg“>
内的内容(所有的<div class="pa-pg“>
元素相当于一个数组,其在数组中下标与页码所对应),隐藏其他div
内的内容。
JS分页代码示例代码如下:
const pagedArticle = document.getElementById('pa-pn');
if (pagedArticle) {
pagedArticle.querySelectorAll('.pa-pn-num').forEach((item) => {
item.addEventListener('click', event => {
const p_num = parseInt(event.currentTarget.textContent) - 1;
document.querySelectorAll('#pagedArticle .pa-pg').forEach((item, idx, arr) => {
if (idx == p_num) {
item.classList.remove('d-none');
item.classList.add('d-block');
}
else {
item.classList.remove('d-block');
item.classList.add('d-none');
}
});
pagedArticle.querySelectorAll('.pa-pn-num').forEach((item) => {
item.classList.remove("active");
});
event.currentTarget.classList.add("active");
});
});
}
JS分页完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdn.staticfile.org/bootstrap/5.3.1/css/bootstrap.min.css">
<title>JS分页代码</title>
<style>
.custom-padding {
padding: 50px 200px;
}
.pa-pn-num {
cursor: pointer;
font-size: 16px;
font-style: normal;
margin: 0 5px;
display: inline-block;
text-align: center;
height: 28px;
line-height: 28px;
width: 28px;
border: 1px solid #222;
border-radius: 17px;
background: #222;
color: #fff;
}
.pa-pn-num:hover {
background: #f4645f;
border: 0;
}
.pa-pn-num.active, .pa-pn-num.active:hover {
background: #fff;
color: #222;
border: 1px solid #222;
}
</style>
</head>
<body>
<div id="pagedArticle" class="paged-article container d-flex flex-column custom-padding">
<div class="pa-pg d-block">
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">PhpStorm破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">原生JS实现分页功能</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">WebStorm破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">IntelliJ IDEA破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">JavaScript为HTML元素删除CSS</h3>
<p>anxin</p></div>
</div>
<div class="pa-pg d-none">
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">JavaScript为HTML元素添加CSS</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Markdown代码中进行缩进和换行</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Javascript为元素添加事件监听器</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Pycharm Pro破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">GoLand破解版下载</h3>
<p>anxin</p></div>
</div>
<div class="pa-pg d-none">
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">RubyMine破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Adobe Acrobat Pro破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">DataSpell破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Adobe XD CC破解版下载</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Rider破解版下载</h3>
<p>anxin</p></div>
</div>
<div class="pa-pg d-none">
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">网站内容如何使必应快速收录:向Bing提交链接</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">网站内容如何使百度快速收录:向百度提交链接 </h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">FreeBSD 13使用PIP包安装 Let's Encrypt
Certbot为Apache启用Https</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">Ubuntu 如何安装KDE Plasma桌面环境</h3>
<p>anxin</p></div>
<div class="d-flex justify-content-between mb-2">
<h3 classname="fs-6">网站中使用本地文件加载Font Awesome 6字体图标</h3>
<p>anxin</p></div>
</div>
<div id="pa-pn" class="pa-pn text-center mt-2">
<i class="pa-pn-num active">1</i>
<i class="pa-pn-num">2</i>
<i class="pa-pn-num">3</i>
<i class="pa-pn-num">4</i>
</div>
</div>
<script>
const pagedArticle = document.getElementById('pa-pn');
if (pagedArticle) {
pagedArticle.querySelectorAll('.pa-pn-num').forEach((item) => {
item.addEventListener('click', event => {
const p_num = parseInt(event.currentTarget.textContent) - 1;
document.querySelectorAll('#pagedArticle .pa-pg').forEach((item, idx, arr) => {
if (idx == p_num) {
item.classList.remove('d-none');
item.classList.add('d-block');
} else {
item.classList.remove('d-block');
item.classList.add('d-none');
}
});
pagedArticle.querySelectorAll('.pa-pn-num').forEach((item) => {
item.classList.remove("active");
});
event.currentTarget.classList.add("active");
});
});
}
</script>
</body>
</html>
总结
本文介绍了使用原生 JavaScript 实现分页功能,本文介绍的JS分页代码是在已有的HTML的基础上,只介绍了JS分页代码。如果你想了解JS如何实现从最开始的将一维数组转换为二维数组,然后再使用原生JS将二维列表生成HTML,最后使用原生JS实现分页功能,请查看文章:JS分页完成代码。
0 评论