JavaScript实现列表分页(小白版)

组件用惯了,突然叫你用纯css+JavaScript写一个分页,顿时就慌了。久久没有接触js了,不知道咋写了。本文章也是借与参考做的一个demo案例,小白看了都会的那种。咱们就以ul列表为例进行分页:

首先模拟的数据列表是这样的,默认有8条数据:

<div class="example">
    <ul id="list">
        <li>这是list1</li>
        <li>这是list2</li>
        <li>这是list3</li>
        <li>这是list4</li>
        <li>这是list5</li>
        <li>这是list6</li>
        <li>这是list7</li>
        <li>这是list8</li>
    </ul>
	<ul id="page">
	</ul>
</div>

在这里插入图片描述
第一步:修改一下样式(一条li标签假如有40px的高度,现在有8个则整个ul有320px;我现在需要进行一个页面显示5条数据;我们就给ul标签调整一下样式)

#list {
    width:400px;
    height:200px;
    margin:10px auto;
    border:1px solid #ccc;
    overflow:hidden;
}

固定高度将5条数据显示出来(200px),溢出的li将进行隐藏,就会显示这样:
在这里插入图片描述
第二步.使用js操作将页面的标签进行获取进行后面的处理

    var pageList = document.getElementById("list");
    var pageLi = pageList.getElementsByTagName("li");
    var pageBtn = document.getElementById("page");

定义分页并计算页面数量:
上方获li获取标签为8;这里是一个页面显示5条数据所以对pageLi进行取模;为0则是Math.floor不是则是Math.ceil,Math.floor是向下取整( 1.6 => 1),Math.ceil为向上取整(1.6=>2 ),所以这里n最后等于2,页面为2。

    var n = 0;//定义分页
    if (pageLi.length % 5 == 0) {//计算页数
        n = Math.floor(pageLi.length / 5);//向下取整 1.6 => 1
    } else {
        n = Math.ceil(pageLi.length / 5);//向上取整 1.6=>2 
    }

第三步:页面数量得到了就要创建分页标签,因为html只有一个ul标签 我们要将li进行动态生成

    for (var i = 1; i <= n; i++) {
        pageli2= document.createElement("li");  //创建li元素
        pageli2.style.cssText = "width:30px;height:30px;background:pink;margin:0 5px;display: inline-block;
        text-align:center;line-height:30px;color:white";//元素样式
        pageli2.innerHTML = i; //页面数显示在li标签里
        pageBtn.appendChild(cLi); //将li加入到ul下
    }

然后获取分页li进行样式设置

    var aLi = pageBtn.getElementsByTagName("li"); 
    for (var i = 0; i <= n - 1; i++) {
        aLi[i].index = i; //下标
        aLi[0].style.background = "pink"; //样式
        aLi[i].style.left = i * 40 + "px"; //偏移 位置

此时就会出现分页:
在这里插入图片描述
第四步:对分页两个li做点击事件进行分页显示

        aLi[i].onclick = function() {
            pageIndex = this.index; //获取下标

            for (var j = 0; j < aLi.length; j++) {
                aLi[j].style.background = "pink";  //未选中样式
            }
            this.style.background = "blue"; //选中样式

            //3.页面切换
            for (var j = 0; j < pageLi.length; j++) {
                pageLi[j].style.display = "none"; //点击第pageIndex页时,让所有页面隐藏
            }
            for (var j = (pageIndex * 5); j < (pageIndex + 1) * 5; j++) {//例如pageIndex为0时,则j=0,j<5;就会将1到5的数据显示出来,以此类推)
                pageLi[j].style.display = "block";
            }
        }

看看最终效果为:
在这里插入图片描述
完整代码:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>使用JavaScript实现列表分页</title>
<style>
* {
    margin:0;
    padding:0;
}
img {
    border:0;
}
ol,ul,li {
    list-style:none;
}
.example {
    width:100%;
    height:500px;
    position:relative;
}
#list {
    width:400px;
    height:200px;
    margin:10px auto;
    border:1px solid #ccc;
    overflow:hidden;
}
#list li {
    width:100%;
    height:40px;
	line-height: 40px;
	font-weight: bold;
	text-align: center;
    border-bottom:1px solid #666;
}
#page {
     width:400px;
    height:30px;
    margin:0 auto;
    border:1px solid #ccc;
    padding:5px 0;
    position:relative;
    overflow:hidden;
}
</style>
</head>
<body>
<div class="example">
    <ul id="list">
        <li>这是list1</li>
        <li>这是list2</li>
        <li>这是list3</li>
        <li>这是list4</li>
        <li>这是list5</li>
        <li>这是list6</li>
        <li>这是list7</li>
        <li>这是list8</li>
    </ul>
	<ul id="page">
	</ul>
</div>
 
<script>
window.onload = function() {
    var pageList = document.getElementById("list");
    var pageLi = pageList.getElementsByTagName("li");
    var pageBtn = document.getElementById("page");
 
    var n = 0;//定义分页
	
    if (pageLi.length % 5 == 0) {//计算页数
        n = Math.floor(pageLi.length / 5);//向下取整 1.6 => 1
    } else {
        n = Math.ceil(pageLi.length / 5);//向上取整 1.6=>2 
    }
    //添加页码
    for (var i = 1; i <= n; i++) {
        pageli2 = document.createElement("li");
        pageli2.style.cssText = "width:30px;height:30px;background:pink;margin:0 5px;display: inline-block;text-align:center;line-height:30px;color:white";
        pageli2.innerHTML = i;
        pageBtn.appendChild(pageli2);
    }
 
    var aLi = pageBtn.getElementsByTagName("li");
    for (var i = 0; i <= n - 1; i++) {
        aLi[i].index = i;
		
        aLi[0].style.background = "pink";
        aLi[i].style.left = i * 40 + "px";
        // alert(aLi[i].index)
 

        aLi[i].onclick = function() {
            pageIndex = this.index;
            for (var j = 0; j < aLi.length; j++) {
                aLi[j].style.background = "pink";
            }
            this.style.background = "blue";
            //3.页面切换
            for (var j = 0; j < pageLi.length; j++) {
                pageLi[j].style.display = "none";
            }
            for (var j = (pageIndex * 5); j < (pageIndex + 1) * 5; j++) {
                pageLi[j].style.display = "block";
            }
        }
    }
}
</script>
</body>
</html>

本教程参与于:JS+CSS实现分页的两个方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/3797.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

变量的理论分布模型

二项分布 定义 对立事件的总体分布&#xff0c;称为二项分布。 例如&#xff0c;一个群体只有男和女&#xff0c;现在进行n次随机抽样调查&#xff0c;随机抽样男出现的次数可能是0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;…&#xff0c;n, 这种类…

网络安全实战从 0 到 1 彻底掌握 XXE

0x01 什么是 XXE个人认为&#xff0c;XXE 可以归结为一句话&#xff1a;构造恶意 DTD介绍 XXE 之前&#xff0c;我先来说一下普通的 XML 注入&#xff0c;这个的利用面比较狭窄&#xff0c;如果有的话应该也是逻辑漏洞。既然能插入 XML 代码&#xff0c;那我们肯定不能善罢甘休…

ROS Cartographer--Algorithm

ROS Cartographer–Algorithm 原文&#xff1a;Algorithm walkthrough for tuning 论文地址(Google Search)&#xff1a;Real-Time Loop Closure in 2D LIDAR SLAM ROS Cartographer的完整参考文件&#xff1a;Cartographer ROS Integration 概述 本地SLAM通常由前端和后端…

Python满屏表白代码

目录 前言 爱心界面 无限弹窗 前言 人生苦短&#xff0c;我用Python&#xff01;又是新的一周啦&#xff0c;本期博主给大家带来了一个全新的作品&#xff1a;满屏表白代码&#xff0c;无限弹窗版&#xff01;快快收藏起来送给她吧~ 爱心界面 def Heart(): roottk.Tk…

【Linux】计算机网络1

计算机网络的背景背景&#xff1a;早在20世纪50年代初&#xff0c;美国建立的地面防空系统就是将地面的雷达和其他测量控制设备的信息通过通信线路汇集到一台中心计算机进行处理&#xff0c;开创了把计算机技术和通信技术相结合的尝试。20世纪60年代中期开始&#xff0c;出现、…

OSPF----特殊区域

目录 OSPF----特殊区域 第一大类----末梢区域&#xff08;Stub Area&#xff09; 完全末梢区域&#xff08;(Totally Stub Area) 第二大类特殊区域----非完全末梢区域&#xff08;NSSA&#xff09; OSPF----特殊区域 第一大类----末梢区域&#xff08;Stub Area&#xff09…

动态版通讯录——“C”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰的内容是动态版通讯录啦&#xff0c;其实之前&#xff0c;我就已经写过静态版的通讯录了&#xff0c;只是存在着一些问题&#xff0c;具体细节可以详细看看我的静态版通讯录&#xff0c;好了&#xff0c;话不多说&…

计算机视觉知识点(一)——交并比(IoU)及其若干改进

交并比&#xff08;IoU&#xff09;前言IoU公式及示意图IoU Loss缺点GIoU Loss公式及示意图缺点DIoU公式及示意图CIoU前言 目标检测是一个常见的计算机视觉任务&#xff0c;在目标检测任务中&#xff0c;交并比作为评判检测框的标准具有很重要的意义&#xff0c;在实际的应用中…

【百面成神】java web基础7问,你能坚持到第几问

前 言 &#x1f349; 作者简介&#xff1a;半旧518&#xff0c;长跑型选手&#xff0c;立志坚持写10年博客&#xff0c;专注于java后端 ☕专栏简介&#xff1a;纯手打总结面试题&#xff0c;自用备用 &#x1f330; 文章简介&#xff1a;java web最基础、重要的8道面试题 文章目…

SAP 系统中过账码or记账码

SAP中过账码和记账码是指同一个事物。 在实际业务中&#xff0c;记账码就是只有“借”和“贷”&#xff0c; 而SAP中Posting Code肩负着更多的任务&#xff1a; 1&#xff09;界定科目类型&#xff0c; 2&#xff09;借贷方向&#xff0c; 3&#xff09;凭证输入时画面上的字…

运算放大器:电压比较器、电压跟随器、同相比例放大器

目录一、单限电压比较器二、滞回电压比较器三、窗口电压比较器四、正点原子直流电机驱动器电路分析实战1、电压采集电路2、电流采集电路3、过流检测电路Ⅰ、采用分压后的输入电压&#xff1a;Ⅱ、采用理想电压源的输入电压&#xff1a;Ⅲ、同相输入电压采用的是非理想电压源&am…

自考本科数据结构导论(02142)历年(应用题+算法题)真题汇总【20年4月-22年10月】

文章目录2020年4月应用题算法设计题2020年10月应用题算法设计题2021年4月应用题算法设计题2021年10月应用题算法设计题2022年4月应用题算法设计题2022年10月应用题算法设计题2020年4月 应用题 有二叉树如题29图所示,写出该二叉树的先序遍历、中序遍历和后序遍历序列。 如题…

AI真的快让我们失业了,从ChatGPT到Midjourney

参考文章&#xff1a; https://mp.weixin.qq.com/s/3RdHPPhYgDfB6KY6Y9Sk2A跟AI有关的新闻&#xff0c;一个接着一个。前一天你还和往常一样进入梦乡&#xff0c;第二天醒来就能被新的AI新闻“炸弹”震得心惊。 以ChatGPT为代表的AI语言模型&#xff0c;以Midjourney为代表的…

五、寄存器方式LED灯控制

寄存器方式LED灯控制 1、原理 电路图中相同网络标号表示它们是连接在一起&#xff0c;STM32F103ZET6的PC0-PC7 管脚连接D1-D8发光二极管阴极&#xff0c;如要使 D1 指示灯亮&#xff0c;只需控制 PC0 管脚输出低电平。 2、工程文件 Keil工程包含main.c、stm32f10x.h、start…

vue开发常用的工具有哪些

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…

开启新航路,拓尔思发力AIGC市场 | 爱分析调研

2022年&#xff0c;随着AI聊天机器人GhatGPT在世界范围内持续火爆&#xff0c;极具创意、表现力、个性化且能快速迭代的AIGC技术成功破圈&#xff0c;成为全民讨论热点。 AIGC是指在确定主题下&#xff0c;由算法模型自动生成内容&#xff0c;包括单模态内容如文本、图像、音频…

【Leetcode】队列的性质与应用

文章目录225. 用队列实现栈示例&#xff1a;提示&#xff1a;分析&#xff1a;题解&#xff1a;622. 设计循环队列示例&#xff1a;提示&#xff1a;分析&#xff1a;题解&#xff1a;225. 用队列实现栈 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&…

个人时间管理网站—Git项目管理

&#x1f31f;所属专栏&#xff1a;献给榕榕&#x1f414;作者简介&#xff1a;rchjr——五带信管菜只因一枚&#x1f62e;前言&#xff1a;该专栏系为女友准备的&#xff0c;里面会不定时发一些讨好她的技术作品&#xff0c;感兴趣的小伙伴可以关注一下~&#x1f449;文章简介…

面试官:如何保证接口幂等性?一口气说了9种方法!

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址 大家好&#xff0c;我是大彬~ 今…

idea 关于git使用总结分享

文章目录前言idea 关于git使用总结分享1. git 目录指定自己的git2. git 回滚到指定提交3. git 回滚某个文件4. 从远程仓库分支拉取最新代码5. 切换分支6. 上传到远程仓库7. git 关联上游服务8. 从上游分支拉取最新的代码9. 从上游仓库上取一个新的branch到远程仓库前言 如果您觉…