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

news2024/7/6 17:32:35

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

小于十页,全部显示。

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.coloradmin.cn/o/1891088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【postgreessql 】统计库中的所有表数量

在PostgreSQL中&#xff0c;你可以使用SQL查询来统计数据库中的所有表数量。这通常涉及到查询系统目录表&#xff0c;特别是 pg_catalog.pg_tables 表&#xff0c;它存储了关于数据库中所有表的信息。 SELECT COUNT(*) FROM information_schema.tables WHERE table_schema IN …

游戏冻结工具 -- 雪藏HsFreezer v1.78

软件简介 HsFreezer是一款多功能游戏冻结工具&#xff0c;它允许用户随意暂停和继续游戏&#xff0c;同时具备系统优化和进程管理的功能。这款软件特别适合希望在游戏加载时间节省或在游戏与其他任务之间快速切换的用户。其主要特点包括快捷键操作、单锁模式的丝滑切换&#x…

【大数据】StarRocks的系统架构

StarRocks 架构简洁&#xff0c;整个系统的核心只有 FE&#xff08;Frontend&#xff09;、BE (Backend) 或 CN (Compute Node) 两类进程&#xff0c;方便部署与维护&#xff0c;节点可以在线水平扩展&#xff0c;元数据和业务数据都有副本机制&#xff0c;确保整个系统无单点。…

数据大小端问题

文章目录 大小端前言函数引用(接下来使用此函数对高低位进行切换)先看截取的对于大小端的定义大小端数据的直观理解[重点] 对uchar数组进行取操作定义一个uint8_t的数组观察起内部内存尝试使用uint32_t 每次区 1、2、3、4byte数据 提升经过上面的介绍一定对大小端有了一定的了解…

桥梁监测系统:守护桥梁结构安全的科技利器

桥梁是城市交通的重要组成部分&#xff0c;然而&#xff0c;长期以来&#xff0c;桥梁结构的健康问题一直是人们关注的焦点。传统的人工巡检方式无法全面准确地掌握桥梁结构的实时状况&#xff0c;因此&#xff0c;桥梁监测系统应运而生。桥梁监测系统是一种基于传感器、信息处…

数据结构 - C/C++ - 树

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 树的概念 结构特性 树的样式 树的存储 树的遍历 节点增删 二叉搜索树 平衡二叉树 树的概念 二叉树是树形结构&#xff0c;是一种非线性结构。 非线性结构&#xff1a;在二叉树中&#x…

<电力行业> - 《第15课:电力领域(一)》

1 电网 发电厂与最终用电用户&#xff08;负荷&#xff09;往往相距很远&#xff0c;因此电力需要由电厂”输送“到最终用户&#xff0c;即“输电环节“&#xff0c;电流的输送往往导致因线路发热造成损耗&#xff0c;所以在输送的时候都是通过变电升高电压&#xff0c;让电流…

C语言刷题小记

前言 本篇博客和大家分享一些C语言的OJ题目&#xff0c;希望大家可以通过这些题目进一步提升自己的编程能力&#xff0c;如果你对本篇内容感兴趣&#xff0c;可以一键三连&#xff0c;多多关注&#xff0c;下面进入正文部分。 题目1 十六进制转十进制 描述 BoBo写了一个十六…

66.Python-web框架-Django-免费模板django-datta-able的分页的一种方式

目录 1.方案介绍 1.1实现效果 1.2django.core.paginator Paginator 类: Page 类: EmptyPage 和 PageNotAnInteger 异常: 1.3 templatetags 2.方案步骤 2.1创建一个common app 2.2创建plugins/_pagination.html 2.3 其他app的views.py查询方法 2.4在AIRecords.html里…

springboot旅游管理系统-计算机毕业设计源码16021

摘 要 本文旨在设计和实现一个基于Spring Boot框架的旅游管理系统。该系统通过利用Spring Boot的快速开发特性和丰富的生态系统&#xff0c;提供了一个高效、可靠和灵活的解决方案。系统将实现旅游景点信息的管理、线路规划、跟团游玩、旅游攻略、酒店信息管理、订单管理和用户…

html+css+js文章模板

图片 源代码在图片后面&#xff0c;点赞加关注&#xff0c;谢谢&#x1f604; 源代码 <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width,…

JSP实现简单的登录和注册

JSP实现登录和注册&#xff08;Map集合模拟数据库&#xff09; 1、login.jsp2、 loginSelect.jsp3、register.jsp4、 RegisterSelect.jsp5、 index.jsp 1、login.jsp login.jsp中username和password在LoginSelect.jsp验证是否一致使用session.setAttribute("login_msg&quo…

Android Studio初学者实例:ContentProvider读取手机通讯录

该实验是通过ContentProvider读取手机通讯录 知识点包含了RecyclerView控件、UriMatcher、ContentResolver 先看效果&#xff0c;显示手机通讯录 首先是界面的布局代码 activity_main59.xml <?xml version"1.0" encoding"utf-8"?> <LinearL…

[译]Reactjs性能篇

英文有限&#xff0c;技术一般&#xff0c;海涵海涵&#xff0c;由于不是翻译出身&#xff0c;所以存在大量的瞎胡乱翻译的情况&#xff0c;信不过我的&#xff0c;请看原文&#xff5e;&#xff5e; 原文地址&#xff1a;https://facebook.github.io/react/docs/advanced-per…

不同操作系统下的换行符

1. 关键字2. 换行符的比较3. ASCII码4. 修改换行符 4.1. VSCode 5. 参考文档 1. 关键字 CR LF CRLF 换行符 2. 换行符的比较 英文全称英文缩写中文含义转义字符ASCII码值操作系统Carriage ReturnCR回车\r13MacIntosh&#xff08;早期的Mac&#xff09;LinefeedLF换行/新行\…

Qt Q_ASSERT详解

Q_ASSERT详解 引言一、基本用法二、深入了解三、参考链接 引言 Q_ASSERT是 Qt 框架中的一个宏&#xff0c;用于在调试时检查某个条件是否为真。它是程序调试中的一个重要工具&#xff0c;有助于开发者在开发过程中及时发现并修复潜在的错误。 一、基本用法 只在使用 Qt 的 D…

暑期大数据人工智能学习-企业项目试岗实训开营

暑期企业项目-试岗实训活动全面开启啦 跟张良均老师学大数据人工智能 不仅可以提供实习证明&#xff0c;有需要话也可以提供实习鉴定报告 √54个热门案例拆解 √40项目实战课程 √27个项目可选 √4个项目方向

数据提取的奥秘

在数字化时代&#xff0c;数据提取作为连接原始数据与知识发现的桥梁&#xff0c;其重要性不言而喻。它不仅是数据分析和数据治理的基石&#xff0c;更是企业决策和业务优化的关键。以下是数据提取奥秘的详细解析&#xff1a; 一、数据提取的定义与意义 定义&#xff1a;数据…

怎样保存python文件

按下“CtrlS”键即可快速保存Python文件。 或者点击“File”&#xff0c;在下拉菜单中选择“Save”。 打开后我们就会看到这样的一个页面窗口了。 我们还能在这里进行路径的保存位置的查找。 然后在这里选择文件类型&#xff0c;并输入文件名。 接下来我们点击保存就可以完成操…

PyCharm远程开发配置(2024以下版本)

目录 PyCharm远程开发配置 1、清理远程环境 1.1 点击Setting 1.2 进入Interpreter 1.3 删除远程环境 1.4 删除SSH 2、连接远程环境 2.1 点击Close Project 2.2 点击New Project 2.3 项目路径设置 2.4 SSH配置 2.5 选择python3解释器在远程环境的位置 2.6 配置远程…