团队筛选功能,上一页,下一页,数字按钮省略

团队筛选不仅可以点击上一页,下一页,数字,首页,尾页可以跳转对应页面,还可以根据数字按钮的长度省略按钮,当排序达到十页时,才会触发。

小于十页,全部显示。

HTML代码内容及注释:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			tr,
			td {
				padding: 10px;
				text-align: center;
			}

			thead {
				background-color: #d5d5d5;
			}

			.page {
				margin: 20px;
				display: flex;
			}

			.top_page {
				margin-left: 10px;
				width: 56px;
				height: 25px;
				border: #000000 1px solid;
				text-align: center;
				line-height: 25px;
			}

			.num_page {
				margin-left: 10px;
				width: 25px;
				height: 25px;
				border: #000000 1px solid;
				text-align: center;
				line-height: 25px;
			}

			.bot_page {
				margin-left: 10px;
				width: 56px;
				height: 25px;
				border: #000000 1px solid;
				text-align: center;
				line-height: 25px;
			}

			.inp {
				margin-left: 10px;
			}

			.text_page {
				margin-left: 10px;
				width: 40px;
				height: 25px;
				border: #000000 1px solid;
				text-align: center;
				line-height: 25px;
			}

			.first {
				margin-left: 10px;
				width: 40px;
				height: 25px;
				border: #000000 1px solid;
				text-align: center;
				line-height: 25px;
			}

			.foot {
				margin-left: 10px;
				width: 40px;
				height: 25px;
				border: #000000 1px solid;
				text-align: center;
				line-height: 25px;
			}

			.reveal {
				width: 80%;
				height: 30px;
				display: flex;
				text-align: center;
				margin-left: 26%;
			}

			.several {
				width: 20%;
				height: 24px;
			}

			.texts {
				margin-left: 30px;
				display: flex;
				margin-top: -14px;
			}

			.text {
				margin-left: 6px;
			}
		</style>
	</head>
	<body>
		<!-- 表格 -->
		<table border="1px" cellpadding="10px" style="border-collapse: collapse; margin-left: 100px;">
			<!-- 头部 -->
			<thead>
				<tr>
					<th>姓名</th>
					<th>性别</th>
					<th>等级</th>
					<th>交易量</th>
				</tr>
			</thead>
			<!-- 内容 -->
			<tbody class="content">
				<tr>
					<td>虚拟星辰</td>
					<td>男</td>
					<td>VIP</td>
					<td>420</td>
				</tr>
			</tbody>
		</table>
		<!-- 页码 -->
		<div class="page">
			<div class="first">首页</div>
			<div class="top_page">上一页</div>
			<div class="num_page"></div>
			<div class="bot_page">下一页</div>
			<div class="foot">尾页</div>
			<input type="text" class="inp" />
			<div class="text_page">跳转</div>
		</div>
		<!-- 显示数据 -->
		<div class="reveal">
			<select class="several" onchange="severals()">
				<option value="3">3</option>
				<option value="5">5</option>
				<option value="8">8</option>
				<option value="10">10</option>
			</select>
			<div class="texts">
				<p class="text">在</p>
				<p class="few"></p>
				<p class="text">页</p>
				<p class="text">显示</p>
				<p class="a"></p>
				<p class="text">-</p>
				<p class="b"></p>
				<p class="text">共</p>
				<p class="c"></p>
				<p class="text">页</p>
			</div>
		</div>

		<script src="js/page.js"></script>
	</body>
</html>

js代码及注释:

// 声明总数据
let data;
let xhr = new XMLHttpRequest();
xhr.open('get', 'js/page.json', true);
xhr.send();
xhr.onreadystatechange = function() {
	if (xhr.readyState == 4 && xhr.status == 200) {
		let text = xhr.responseText;
		console.log(text);
		data = JSON.parse(text);
		console.log(data);
		// 调用渲染函数
		list(data);
	}
};
// 当前所在页面 初始值在第一页 
let k = 0;
// 声明初始值 页面显示的数据
let p = 3;
// 声明总页码
let all_page;
// 获取第几页到第几页
let few = document.getElementsByClassName('few')[0];
let a = document.getElementsByClassName('a')[0];
let b = document.getElementsByClassName('b')[0];
let c = document.getElementsByClassName('c')[0];
let numPage = document.getElementsByClassName('num_page')[0];
// 封装函数 
function list(data) {
	console.log(data);
	// 共有几页
	all_page = Math.ceil(data.length / p);
	console.log(all_page);
	// 拼接内容
	let str = '';
	// 拼接页码
	let stre = '';
	// for循环遍历数组 声明变量i i初始值为当前页面乘每页显示数据 i又小于(当前页面+1)乘每页显示数据 i才会++
	for (let i = k * p; i < (k + 1) * p; i++) {
		if (data[i] != undefined) {
			// 拼接内容
			str += `<tr>
					<td>${data[i].name}</td>
					<td>${data[i].sex==1?`男`:`女`}</td>
					<td>${data[i].class == 1?`会员`:data[i].class == 2?`VIP`:`合伙人`}</td>
					<td>${data[i].deal}</td>
				</tr>`;
		}
	};
	// 拼接页码
	stre += `<div class="first" onclick="first()">首页</div>
	<div class="top_page" onclick="previous()">上一页</div>`;
	// for循环遍历数组 i的初始值为0 i小于总页码 i++
	// 判断页码是否小于10,小于10 页码全部渲染。
	if (all_page <= 10) {
		for (let i = 0; i < all_page; i++) {
			stre +=
				`<div class="num_page" onclick="target_page(${i+1})" ${k == i?'style="background-color:#ffff7f"':''}>${i+1}</div>`
		}
		// 否则就判断当k小于3时 渲染页码1,2,3,4,5
	} else if (k < 3) {
		stre += `<div class="num_page" onclick="target_page(${1})" ${k == 0?'style="background-color:#ffff7f"':''}>${1}</div>
			<div class="num_page" onclick="target_page(${2})" ${k == 1?'style="background-color:#ffff7f"':''}>${2}</div>
			<div class="num_page" onclick="target_page(${3})" ${k == 2?'style="background-color:#ffff7f"':''}>${3}</div>
			<div class="num_page" onclick="target_page(${4})" ${k == 3?'style="background-color:#ffff7f"':''}>${4}</div>
			<div class="num_page" onclick="target_page(${5})">${5}</div>
			<div>......</div>`

		// 否则判断当k大于等于3且k小于总页码-3时 渲染中间页
	} else if (k >= 3 && k < all_page - 3) {
		stre +=
			`<div>......</div>
			<div class="num_page" onclick="target_page(${k-1})">${k-1}</div>
			<div class="num_page" onclick="target_page(${k})">${k}</div>
			<div class="num_page" onclick="target_page(${k+1})" ${k == k?'style="background-color:#ffff7f"':''}>${k+1}</div>
			<div class="num_page" onclick="target_page(${k+2})" >${k+2}</div>
			<div class="num_page" onclick="target_page(${k+3})">${k+3}</div>
			<div>......</div>`
		// 否则判断k大于总结码减3时 渲染数据
	} else if (k >= all_page - 3) {
		stre +=
			`<div>......</div>
			<div class="num_page" onclick="target_page(${all_page-4})">${all_page-4}</div>
			<div class="num_page" onclick="target_page(${all_page-3})" >${all_page-3}</div>
			<div class="num_page" onclick="target_page(${all_page-2})" ${k == 8?'style="background-color:#ffff7f"':''}>${all_page-2}</div>
			<div class="num_page" onclick="target_page(${all_page-1})" ${k == 9?'style="background-color:#ffff7f"':''}>${all_page-1}</div>
			<div class="num_page" onclick="target_page(${all_page})" ${k == 10?'style="background-color:#ffff7f"':''}>${all_page}</div>`
	};
	stre += `<div class="bot_page" onclick="down()">下一页</div>
			<div class="foot" onclick="foot()">尾页</div>
			<input type="text" class="inp"/>
			<div class="text_page" onclick="leave()">跳转</div>`;
	// 在第几页
	few.innerHTML = k + 1;
	// 显示第几条数据
	a.innerHTML = k * p + 1;
	// 到第几条数据 当到最后一页的时候 页码显示的数量大于总数量时 让他等于总数量的个数 
	b.innerHTML = (k + 1) * p > data.length ? data.length : (k + 1) * p;
	// 共几页
	c.innerHTML = all_page;
	document.getElementsByClassName('content')[0].innerHTML = str;
	document.getElementsByClassName('page')[0].innerHTML = stre;
};
// 点击数字跳转页面 
function target_page(i) {
	k = i - 1;
	// 调用渲染函数
	list(data);
};
// 点击上一页跳转
function previous() {
	// 判断页码大于0 才可以向上一页跳转
	if (k > 0) {
		k--;
	} else {
		alert('没有上一页了')
	};
	// 调用渲染函数
	list(data);
};
// 下一页
function down() {
	// 判断页码小于总页码时 才可以向下一页跳转
	if (k < all_page - 1) {
		k++;
	} else {
		alert('这是最后一页')
	};
	// 调用渲染函数
	list(data);
};
// 点击首页跳转到第一页 
// 给首页添加点击事件,直接让k=0 即为第一页
function first() {
	k = 0;
	// 调用渲染函数
	list(data);
};
// 点击尾页 页面显示最后一页
function foot() {
	k = all_page - 1;
	// 调用渲染函数
	list(data);
};
// 输入数字跳转页面
// 给跳转添加点击事件
function leave() {
	// 获取输入框的值
	let inp = document.getElementsByClassName('inp')[0].value;
	console.log(inp);
	// 判断输入框内容不能为空且输入框内容不能大于最大页码且内容大于0
	if (inp == '' || inp > all_page - 1 || inp < 0 || inp % 1 != 0) {
		alert('没有此页吗');
	} else {
		// k等于输入的数字减一
		k = inp - 1;
	};
	// 调用渲染函数
	list(data);
};

// 页面根据下拉框显示数据渲染
// 获取下拉框
let several = document.getElementsByClassName('several')[0];
console.log(several);
// 绑定onchange事件
function severals() {
	//重新赋值
	p = several.value * 1;
	// 获取现在有的页码
	all_page = Math.ceil(data.length / p);
	// 判断k是否大于总页码 
	if (k > all_page - 1) {
		k = all_page - 1;
	};
	// 调用渲染函数
	list(data);
};

json假数据,这里我们写了32条数据:

[{
	"name": "虚拟星辰",
	"sex": 1,
	"class": 2,
	"deal": 420
}, {
	"name": "神秘星河",
	"sex": 2,
	"class": 1,
	"deal": 301
}, {
	"name": "灵光闪现",
	"sex": 1,
	"class": 3,
	"deal": 290
}, {
	"name": "微笑的月亮",
	"sex": 2,
	"class": 2,
	"deal": 468
}, {
	"name": "萌猫棉花糖",
	"sex": 2,
	"class": 2,
	"deal": 105
}, {
	"name": "未知的旅行家",
	"sex": 1,
	"class": 3,
	"deal": 900
}, {
	"name": "匿名旅途",
	"sex": 1,
	"class": 1,
	"deal": 503
}, {
	"name": "数据风暴",
	"sex": 1,
	"class": 2,
	"deal": 790
}, {
	"name": "千变万化",
	"sex": 1,
	"class": 3,
	"deal": 813
}, {
	"name": "梦幻仙境",
	"sex": 1,
	"class": 2,
	"deal": 742
}, {
	"name": "甜点糖果",
	"sex": 2,
	"class": 3,
	"deal": 609
}, {
	"name": "网络风行",
	"sex": 1,
	"class": 3,
	"deal": 305
}, {
	"name": "流星追梦 ",
	"sex": 1,
	"class": 1,
	"deal": 289
}, {
	"name": "孤独的画家",
	"sex": 1,
	"class": 1,
	"deal": 512
}, {
	"name": "星星饼干",
	"sex": 2,
	"class": 2,
	"deal": 1059
}, {
	"name": "幻梦幽影",
	"sex": 2,
	"class": 3,
	"deal": 349
}, {
	"name": "星辰逸羽",
	"sex": 1,
	"class": 1,
	"deal": 59
}, {
	"name": "灵韵流光",
	"sex": 1,
	"class": 3,
	"deal": 783
}, {
	"name": "清风聆心",
	"sex": 2,
	"class": 3,
	"deal": 245
}, {
	"name": "绯色晨曦 ",
	"sex": 2,
	"class": 2,
	"deal": 178
}, {
	"name": "幽夜幻影",
	"sex": 1,
	"class": 1,
	"deal": 853
}, {
	"name": "紫炎幻梦",
	"sex": 2,
	"class": 1,
	"deal": 908
}, {
	"name": "自强不息",
	"sex": 1,
	"class": 2,
	"deal": 1059
}, {
	"name": "步步高升",
	"sex": 2,
	"class": 1,
	"deal": 463
}, {
	"name": "如花似锦",
	"sex": 2,
	"class": 3,
	"deal": 97
}, {
	"name": "前程似锦",
	"sex": 1,
	"class": 2,
	"deal": 289
}, {
	"name": "大展宏图",
	"sex": 2,
	"class": 3,
	"deal": 752
}, {
	"name": "乘风波浪",
	"sex": 1,
	"class": 3,
	"deal": 607
}, {
	"name": "如花似锦",
	"sex": 2,
	"class": 2,
	"deal": 999
}, {
	"name": "好事成双",
	"sex": 1,
	"class": 1,
	"deal": 739
}, {
	"name": "悠悠我心",
	"sex": 2,
	"class": 1,
	"deal": 576
}, {
	"name": "金榜题名",
	"sex": 2,
	"class": 1,
	"deal": 666
}]

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

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

相关文章

abap 类封装Excel转换到内表

文章目录 1.封装思路2.参数2.1.参数解析3.代码4.调用案例5.该类中的其他方法截图1.封装思路 直接复制粘贴激活直接用 首先,需要你在SE11中创建一个和你Excel中的字段相同的结构,然后把这个结构名字以字符串的形式传给方法.几乎可以实现任意扁平结构的Excel转到内表. 2.参数 2…

港科夜闻 | 香港科大学者戴希教授荣获陈嘉庚科学奖及国家自然科学奖一等奖,李卫平教授荣获国家自然科学奖二等奖...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大学者戴希教授荣获「陈嘉庚科学奖」及「国家自然科学奖」一等奖&#xff0c;李卫平教授荣获「国家自然科学奖」二等奖。香港科大蒙民伟博士纳米科学教授兼物理系讲座教授戴希及其团队&#xff0c;具有开创性的研究…

Stylized Modular Character (Female)(程式化的模块化角色(女性)“运动型”)

一套程式化的角色模块化部件。 在这样的插槽中定制&#xff1a; 头 躯干 手 裤子 靴子 头发 每个插槽都有 2 到 5 个在 URP 中工作的 PBR 材料的选项。 该项目基于官方 Unity Standard Assets 包中的 Ethan 默认角色。 不包含动画。 皮肤网格的 SSS 是由自发光贴图伪造的。 如果…

i-Health

技术栈&#xff1a;HTMLCSSJavascriptPHP

LabVIEW代码性能优化

优化LabVIEW代码以提高软件性能是确保系统高效运行的关键。通过分析代码结构、数据管理、并行处理、内存使用和硬件资源的有效利用&#xff0c;我们可以从多个角度提升LabVIEW程序的执行速度和稳定性。 代码结构优化 模块化编程 将复杂的程序分解成多个子VI&#xff0c;每个子V…

SpringBoot:使用Spring Batch实现批处理任务

引言 在企业级应用中&#xff0c;批处理任务是不可或缺的一部分。它们通常用于处理大量数据&#xff0c;如数据迁移、数据清洗、生成报告等。Spring Batch是Spring框架的一部分&#xff0c;专为批处理任务设计&#xff0c;提供了简化的配置和强大的功能。本文将介绍如何使用Spr…

mysql wrnning Difficult to find free blocks in the buffer pool解决方法

mysql [InnoDB] Difficult to find free blocks in the buffer pool (140397 search iterations)! 我使用的是mysql8,。 原因&#xff1a;这种情况&#xff0c;多半出现在别人在非常大的写入&#xff0c;或者百万级的查询中。 解决方式&#xff0c;centos7在线安装的mysql&am…

【Linux进阶】windows和linux文件互传的两种方式

前言 我们在windows电脑上使用ssh工具&#xff08;比如Xshell&#xff09;来远程登录并使用linux云服务器的时候&#xff0c;难免要将我们的文件传输到linux服务器上&#xff0c;或者将linux服务器的文件传输到我们的windows电脑里&#xff0c;那么&#xff0c;我们要怎么来实…

FFmpeg教程-三-播放pcm文件-1

目录 一&#xff0c;下载SDL 二&#xff0c;在Qt中测试 1&#xff0c;在pro文件中加入路径 2&#xff0c;在.cpp文件中加入头文件 3&#xff0c;进行测试 4&#xff0c;显示结果 一&#xff0c;下载SDL 通过编程的方式播放音视频&#xff0c;也是需要用到这2个库: FFmpeg…

电脑数据恢复篇:如何恢复误删除的文件

在清理电脑或优化存储设备时无意中删除重要文件是人类常见的错误。不可否认的是&#xff0c;在批量删除文件时&#xff0c;您经常会同时删​​除垃圾文件和重要文件。后来您发现一堆重要的文档或文件不见了。在这种情况下&#xff0c;您唯一的选择就是寻找恢复已删除文件的方法…

【机器学习300问】135、决策树算法ID3的局限性在哪儿?C4.5算法做出了怎样的改进?

ID3算法是一种用于创建决策树的机器学习算法&#xff0c;该算法基于信息论中的信息增益概念来选择最优属性进行划分。信息增益是原始数据集熵与划分后数据集熵的差值&#xff0c;熵越小表示数据集的纯度越高。有关ID3算法的详细步骤和算法公式在我之前的文章中谈到&#xff0c;…

单调队列优化DP——AcWing 135. 最大子序和

单调队列优化DP 定义 单调队列优化DP是一种在动态规划&#xff08;Dynamic Programming, DP&#xff09;中应用的数据结构优化方法。它利用单调队列&#xff08;Monotonic Queue&#xff09;这一数据结构来高效维护一个区间内的最值&#xff08;通常是最大值或最小值&#xf…

自定义一个背景图片的高度,随着容器高度的变化而变化,小于图片的高度时裁剪,大于时拉伸100%展示

1、通过js创建<image?>标签来获取背景图片的宽高比&#xff1b; 2、当元素的高度大于原有比例计算出来的高度时&#xff0c;背景图片的高度拉伸自适应100%&#xff0c;否则高度为auto&#xff0c;会自动被裁减 3、背景图片容器高度变化时&#xff0c;自动计算背景图片的…

RFID固定资产管理系统在企业中的应用与优势

随着企业资产规模的不断扩大和管理复杂性的增加&#xff0c;传统的资产管理方式已无法满足企业高效管理的需求。RFID固定资产管理系统凭借其高效、准确、实时的特点&#xff0c;成为企业固定资产管理的新宠。 一、什么是RFID固定资产管理系统 RFID&#xff08;无线射频识别&…

浪潮信息存储的灵魂:平台化+场景化 全面释放数据价值

在数字化浪潮的席卷下&#xff0c;浪潮信息存储平台凭借卓越的性能和稳定性&#xff0c;正日益成为企业释放数据价值的重要力量。近日&#xff0c;浪潮信息出席了“2024数据基础设施技术峰会”&#xff0c;相关代表聚焦当前数据价值的释放话题&#xff0c;围绕先进存储基础设施…

CSS|01 CSS简介CSS的3种书写方式注释

CSS简介 什么是CSS CSS&#xff08;Cascading Style Sheet&#xff09;&#xff0c;层叠样式表 或者 级联样式表&#xff0c;简称样式表。CSS的作用 主要用来给 HTML网页 设置外观或者样式。CSS的语法规则 h1 {属性:属性值}注意&#xff1a;1. CSS代码是由选择器和一对括号…

Ubuntu Server 和 Ubuntu Desktop 组合使用

1.常见的组合使用方式 Ubuntu Server 和 Ubuntu Desktop 确实可以组合使用&#xff0c;但具体要看你的需求和使用场景。以下是一些常见的组合使用方式&#xff1a; 单一设备上安装&#xff1a;你可以在一台设备上同时安装 Ubuntu Server 和 Ubuntu Desktop。这样&#xff0c;你…

【ONE·Linux || 高级IO(一)】

总言 主要内容&#xff1a;介绍五种IO模型的基本概念、学习IO多路转接&#xff08;select、poll编程模型&#xff09;。       文章目录 总言1、问题引入1.1、网络通信与IO1.2、五种IO模型1.2.1、举例引入1.2.2、IO模型具体含义介绍1.2.2.1、阻塞式IO1.2.2.2、非阻塞轮询检…

mathcup大数据竞赛论文中集成学习(或模型融合)的运用分析

ps: (模型融合和集成学习是两个紧密相关但又有所区别的概念。集成学习是一种更广泛的范式&#xff0c;而模型融合可以被视为集成学习的一种特殊形式或策略。) 1.集成学习原理 图1 如图1所示&#xff0c;集成学习是一种通过结合多个机器学习模型的预测来提高整体性能的策略。其…

数据结构-循环链表和双向链表

目录 前言一、循环链表1.1 循环链表的介绍1.2 循环链表的实现 二、双向链表总结 前言 本篇文章介绍数据结构中的循环链表和双向链表 一、循环链表 1.1 循环链表的介绍 将单链表的形式稍作改变&#xff0c;单链表的最后一个结点指向第一个结点 对第一个结点概念的说明&#…