JavaScript实现数据分页

目录

  • 分页
  • 效果图
  • 如何分页
  • 代码

分页

当表单数据过多时,比较不容易浏览。这个时候就需要分页查看。

效果图

在这里插入图片描述

如何分页

1、首先确定总记录条数 len
2、单页浏览条数 page_number
3、页数 Total_pages=len % page_number == 0 ? len / page_number : len / page_number + 1;

计算出页数后就好办了,我们只需要对页码按钮设置点击事件,事件内容为,根据页数显示表格中的数据。数据用一个数组对象来保存,我们只需要遍历数组对象在页面展示即可。
数据展示的范围为:start为每页循环遍历数据数组的起点,end为终点
如果当前页数大于1则start=(pagethis-1)*page_number end=start+page_number
如果当前页数等于1则start=0 end=page_number-1
如果end>数据数组的最大下标值 则让end=数据数组的最大下标值

代码

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0,minimal-ui:ios"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><link rel="stylesheet" href=""><script src=""></script><link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet"><style>#main {width: 80%;margin: 20px auto;}nav {text-align: center;}</style>
</head><body><div id="main"><table class="table table-bordered"><tbody><tr><th>商品名称</th><th>商品价格</th><th>图片路径</th></tr></tbody></table><nav aria-label="Page navigation"><ul class="pagination"><li id="pre"><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li></ul></nav></div></body>
<script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
<script>var table = document.querySelector("table")//模拟后台响应的数据var json = [{"product_id": "1001","product_name": "java核心技术1","price": "120","imgurl": "res/productimg/1.jpeg"}, {"product_id": "1002","product_name": "java核心技术2","price": "130","imgurl": "res/productimg/2.jpeg"}, {"product_id": "1003","product_name": "web技术","price": "100","imgurl": "res/productimg/3.jpeg"}, {"product_id": "1004","product_name": "Mysql必知必会","price": "39","imgurl": "res/productimg/4.jpeg"}, {"product_id": "1005","product_name": "中国近代史","price": "105","imgurl": "res/productimg/4.jpeg"}, {"product_id": "1006","product_name": "世界史","price": "110","imgurl": "res/productimg/1.jpeg"}, {"product_id": "1007","product_name": "高等数学","price": "50","imgurl": "res/productimg/1.jpeg"}, {"product_id": "1008","product_name": "离散数学","price": "60","imgurl": "res/productimg/1.jpeg"}, {"product_id": "1010","product_name": "线性代数","price": "50","imgurl": "res\\productimg/3e83c2a6-b529-4bee-8ca9-ecc868b4d6f7.jpeg"}, {"product_id": "1011","product_name": "数据结构","price": "100","imgurl": "res\\productimg/53dccb9f-b918-4a81-acc9-f99594992db1.jpeg"}, {"product_id": "1013","product_name": "人工智能","price": "120","imgurl": "res\\productimg/94736781-046b-4c7c-8499-bebad2542b6f.jpg"}, {"product_id": "1014","product_name": "大数据","price": "120","imgurl": "res\\productimg/f891569d-45e3-4b7f-a37e-980273f84508.jpg"}];var ul = document.querySelector(".pagination");var page_number = 5; //单页浏览的条数var Total_pages; //页数var liAll; //页码按钮下标为 1到length-2是页数 0和length-1为上一页和下一页var pre; //上一页var next; //下一页function clearTable() {table.innerHTML = `<tbody><tr><th>商品名称</th><th>商品价格</th><th>图片路径</th></tr></tbody>`}window.onload = function() {json.forEach(function(item, i) {var tbody = document.querySelector("tbody");if (i < page_number) {var tr = document.createElement("tr");tr.innerHTML = `<td>${item.product_name}</td><td>${item.price}</td><td>${item.imgurl}</td>`tbody.appendChild(tr);}})var len = json.length; //总记录条数Total_pages = len % page_number == 0 ? len / page_number : len / page_number + 1; //页数for (var i = 1; i <= Total_pages; i++) {ul.innerHTML += `<li  id="${i}"><a href="#">${i}</a></li>`}ul.innerHTML += `<li id="next"><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>`;liAll = document.querySelectorAll("li");liAll[1].childNodes[0].style.color = "red"; //初始第一页页码是红的// console.log([liAll])var pagethis = 1; //当前是第几页for (var i = 1; i < liAll.length - 1; i++) {liAll[i].onclick = function() {for (var j = 1; j < liAll.length - 1; j++) {liAll[j].childNodes[0].style.color = "blue"}pagethis = this.id; //获取当前是第几页liAll[pagethis].childNodes[0].style.color = "red";// console.log(liAll[i])let start; //当页数据的起始下标let end; //当页数据的结束下标if (pagethis != 1) {start = (pagethis - 1) * page_number;end = start + page_number;if (end > json.length - 1) { //如果当页数据结束值大于总数据条数下标的值则赋值为总数据条数最大下标值end = json.length - 1;}} else {start = 0;end = page_number - 1;}// console.log("start=" + start)// console.log("end=" + end)clearTable();var tbody = document.querySelector("tbody");json.forEach(function(item, i) {if (i >= start && i <= end) {var tr = document.createElement("tr");tr.innerHTML = `<td>${item.product_name}</td><td>${item.price}</td><td>${item.imgurl}</td>`tbody.appendChild(tr);}})}}pre = document.querySelector("#pre") //上一页next = document.querySelector("#next") //下一页pre.onclick = function() {// alert(pagethis)if (pagethis != 1) { //当前页数不等于1时执行上一页pagethis--;for (var j = 1; j < liAll.length - 1; j++) {liAll[j].childNodes[0].style.color = "blue"}liAll[pagethis].childNodes[0].style.color = "red";let start;let end;if (pagethis != 1) {start = (pagethis - 1) * page_number;end = start + page_number;if (end > json.length - 1) {end = json.length - 1;}} else {start = 0;end = page_number - 1;}clearTable();var tbody = document.querySelector("tbody");json.forEach(function(item, i) {if (i >= start && i <= end) {var tr = document.createElement("tr");tr.innerHTML = `<td>${item.product_name}</td><td>${item.price}</td><td>${item.imgurl}</td>`console.log(tr)tbody.appendChild(tr);}})}}next.onclick = function() {// alert(pagethis)if (pagethis < liAll.length - 2) { //当前页数小于最后一页则执行下一页pagethis++;for (var j = 1; j < liAll.length - 1; j++) {liAll[j].childNodes[0].style.color = "blue"}liAll[pagethis].childNodes[0].style.color = "red";let start;let end;if (pagethis != 1) {start = (pagethis - 1) * page_number;end = start + page_number;if (end > json.length - 1) {end = json.length - 1;}} else {start = 0;end = page_number - 1;}clearTable();var tbody = document.querySelector("tbody");json.forEach(function(item, i) {if (i >= start && i <= end) {var tr = document.createElement("tr");tr.innerHTML = `<td>${item.product_name}</td><td>${item.price}</td><td>${item.imgurl}</td>`console.log(tr)tbody.appendChild(tr);}})}}}
</script></html>

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

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

相关文章

日均互动50万次 微信的营销的成功之道

微信公众平台已成为目前最热的企业营销推广平台&#xff0c;每天都有大量互联网公司和传统企业进驻&#xff0c;使用公众账号通过移动端和粉丝互动&#xff0c;不仅可以群发文字、图片、视频、语音等信息内容&#xff0c;还可以进行一对一的深入沟通。 现在微信公众平台已经成为…

微信开发1之PHP成功获取微信支付的Token

相信不少同学在开发“微信支付”的时候遇到了无法获取Token的难题&#xff0c;这里贴出我成功获取Token的php源码&#xff1a; 步骤如下&#xff1a; 1&#xff0c;确保你服务器的php环境是搭建好的&#xff0c;意思就是可以正确运行php程序 2&#xff0c;确定微信Token访问你…

spring IOC基本配置(xml配置和注解配置)

目录Spring IOCIOC是什么IOC可以做什么依赖注入IOC和DIIOC容器Bean配置IOC容器spring ioc 依赖XML配置实例化容器使用容器xml配置详解spring对bean的管理1、创建bean的三种方式2、bean对象的作用范围3、bean对象的生命周期构造函数依赖注入Setter方法依赖注入注解配置使用xml和…

微信开发2之php网页授权登录

在开发之前&#xff0c;我们要确保我们的服务号&#xff0c;在接口权限处&#xff0c;已经获得了网页授权权限 此外&#xff0c;我们还需要有个备案通过的域名&#xff0c;比如"www.myname.com"&#xff0c;并确保你的域名可以访问到你的服务器&#xff0c;于是在公众…

linux6.0 SVN 服务搭建

Linux6.0下安装svn服务器<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Subversion有两种运行方式&#xff0c;一种是基于Apache Http Server&#xff0c;另外一种是Subversion Standalone Server。下面我讲解的是基于Apache H…

Spring+SpringMVC+Mybatis 整合入门

文章目录整体结构结构图Spring 整合SpringMVCweb.xmlSpringMvc.xmlSpring整合MybatisapplicationContext.xml代理接口的配置accountDaoimpl.xml其余代码表现层业务层持久层domain查询效果展示附上spring约束spring约束SpringMVC约束Maven 依赖整体结构 结构图 Spring 整合Sprin…

微信开发3之php模板信息推送

模板信息推送&#xff1a;需要在后台开通了模板消息推送接口 PHP代码如下&#xff1a; <?php $appid"wxxxxxxxxxxxxxxxxxx"; //填写微信后台的appid $appsecret"xxxxxxxxxxxxxxxxxxxxxxxxx"; //填写微信后台的appsecret $TOKEN_URL"…

SpringBoot实现国际化

在哔哩哔哩一位up主视频中学到的&#xff01; 国际化 原理 通过Properties文件配置&#xff0c;配置完后通过Thymeleaf中的#{} 来取代原来的静态资源。例如&#xff1a; spring:# 关闭模板引擎的缓存thymeleaf:cache: falsemessages:encoding: UTF-8## 配置国际化绑定的文…

前端开发1之Node.js以及npm开发环境搭建

关于现今的前端开发&#xff0c;由于微服务架构的普及&#xff0c;前端工程师必须承担更重要的任务。现在的后端工程师无需考虑JS、Ajax和json的解析遍历&#xff0c;或许只需要处理前端请求过来的各种带参请求&#xff08;Get/Post/Patch等&#xff09;&#xff0c;目前许多前…

开源中国iOS客户端学习——(八)网络通信AFNetworking类库

AFNetworking是一个轻量级的iOS网络通信类库&#xff0c;继ASI类库不在更新之后开发者们有一套不错选择&#xff1b; AFNetworking类库和使用教程: https://github.com/AFNetworking/AFNetworking 如果想深入研究有官方文档介绍:http://afnetworking.github.com/AFNetworking/ …

OpenGL 入门第一课 视窗以及三角形

请查看课件教程 下面是我粗劣画的过程图 下面是课件中的过程图 下面是未使用索引缓冲对象&#xff08;EBO&#xff09;的 #define GLEW_STATIC // 这个一定要加不然报错 静态链接库 #include<iostream> #include<GL/glew.h> #include<GLFW/glfw3.h> usin…

玩玩短视频平台和网课平台开发1——腾讯云对象储存COS的初步配置

近一两年来&#xff0c;抖音、快手等以短视频为手段的社交工具红遍了大江南北&#xff0c;腾讯也推出了"微视"平台&#xff0c;希望分一杯羹&#xff1b;传统的直播平台如&#xff1a;斗鱼直播、虎牙直播就更不用说了&#xff0c;甚至涌现了许多主打"知识付费&q…

解决从其它搜索引擎不能直接访问百度页面的问题

由于最近baidu和360又开始互咬了&#xff0c;从其它搜索引擎搜索到百度的结果时又变不能直接访问了&#xff0c;会出现如下界面。 需要手动点击这个链接才能访问&#xff0c;让人非常不爽。因此我写了一个chrome扩展解决这个问题&#xff0c;原理很简单&#xff1a;当遇到这种需…

基于JAVA的校园电商物流云平台 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快递公司模块2.4 物流订单模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 商品表3.2.2 快递公司表3.2.3 物流订单表 四、系统展示五、核心代码5.1 查询商品5.2 查询快递公司5.3 查…

OpenGL Sharders(着色器) 入门

着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。 // 顶点着色器 #version 330 core // 0号栏位读取顶点坐标 layout (location 0) in vec3 aPos; //1号栏位读取颜色颜色 …

玩玩机器学习1——ubuntu16.04 64位安装TensorFlow GPU+python3+cuda8.0+cudnn8.0

如今的机器学习运算大多数都是利用gpu进行&#xff0c;包括很大大型游戏&#xff0c;比特币的开采&#xff0c;都离不开GPU的运算&#xff0c;GPU已成为大型运算能力的主要硬件。 大名鼎鼎的机器学习开源框架&#xff0c;如TensorFlow和Caffe&#xff0c;Caffe2都建议使用GPU作…

[linux]Ubuntu12.1下打开terminal的方式

有的人比较习惯使用terminal&#xff0c;喜欢简单的文本窗口&#xff0c;刚使用ubuntu可能还不习惯&#xff0c;这里给出几种打开terminal的方法&#xff1a;1 图形界面中图一就是那个左上角红色方框里的图标&#xff0c;点击后搜索terminal就好了。图二2 使用快捷键Ctrl Alt …

OpenGL 自定义着色器(Shaders)

自定义着色器类 声明 #pragma once#include<string>class Shaders { public:Shaders(const char* vertexPath, const char* fragmentPath);~Shaders();std::string vertexString;std::string fragmentString;const char* vertexSource;const char* fragmentSource;unsi…

《统一沟通-微软-技巧》-20-Lync 2010如何在我的联系人列表中添加非联盟联系人...

Blog:http://dynamic.blog.51cto.com MSN:LiuJinFengmsn.com QQ:316190099如果加:A&#xff0e; 内部Lync用户:输入-英文名输入-中文名输入-中文名/英文名中包括的部分字符B&#xff0e; 联盟Lync用户:输入:邮件地址C&#xff0e; 非 Lync用户:在Outlook新建联系人让Lync与Outl…

texture 纹理(贴图)

纹理 纹理是一个2D图片&#xff08;甚至也有1D和3D的纹理&#xff09;&#xff0c;它可以用来添加物体的细节。 这是两张照片叠加的效果 由下面两张叠加而成 源代码 shaders类在自定义着色器 中有完整的源代码。 下边我们使用stb_image.h来解析图片。 #define GLEW_STATI…