JS代码实现table数据分页效果

下面是JS代码实现table数据分页的完整攻略。

1. 为什么需要table数据分页

当我们在网页上展示大量数据的时候,如果直接呈现所有数据,会导致页面太长,用户体验不佳,同时会严重影响页面的加载速度和用户体验。因此,通常需要使用table数据分页的方式,将数据分成多页,让用户能够快速地定位到所需要的数据。

2. 如何实现table数据分页

实现table数据分页的核心代码是使用JavaScript来处理数据并生成HTML代码。具体实现步骤如下:

2.1 准备数据

在准备数据时,我们需要获取需要展示的数据,计算总页数等。代码示例:

var data = [
  {id: 1, name: '张三', age: 18},
  {id: 2, name: '李四', age: 20},
  {id: 3, name: '王五', age: 22},
  {id: 4, name: '赵六', age: 30},
  {id: 5, name: '钱七', age: 28},
  {id: 6, name: '孙八', age: 25},
  {id: 7, name: '周九', age: 21},
  {id: 8, name: '吴十', age: 19},
];
//设置每页显示的数据条数
var pageSize = 3;
//计算总页数
var totalPages = Math.ceil(data.length / pageSize);

2.2 创建HTML代码

在创建HTML代码时,我们需要根据每一页的数据来生成对应的HTML代码,并添加到页面上。代码示例:

function createTable (pageIndex) {
  //获取当前页需要展示的数据
  var start = pageIndex * pageSize;
  var end = start + pageSize;
  var currentPageData = data.slice(start, end);
  //清空原来的table数据
  var tableBody = document.getElementById('tableBody');
  tableBody.innerHTML = '';
  //创建新的table数据
  for (var i = 0; i < currentPageData.length; i++) {
    var rowHtml = '<tr><td>' + currentPageData[i].id + '</td><td>' + currentPageData[i].name + '</td><td>' + currentPageData[i].age + '</td></tr>';
    tableBody.innerHTML += rowHtml;
  }
}

2.3 创建分页效果

在创建分页效果时,我们需要根据当前页和总页数来生成分页按钮,并绑定分页事件,让用户可以通过点击分页按钮来切换不同的页数。代码示例:

function createPager () {
  //获取分页容器
  var pager = document.getElementById('pager');
  //清空原有的分页按钮
  pager.innerHTML = '';
  //生成新的分页按钮
  for (var i = 0; i < totalPages; i++) {
    var btn = document.createElement('button');
    btn.textContent = i + 1;
    if (i === 0) {
      btn.classList.add('active');
    }
    btn.addEventListener('click', function () {
      //设置当前页为点击的页数
      var pageIndex = parseInt(this.textContent) - 1;
      //更新数据和分页按钮
      createTable(pageIndex);
      updatePager(pageIndex);
    });
    pager.appendChild(btn);
  }
}
//更新当前页的激活状态
function updatePager (pageIndex) {
  var pager = document.getElementById('pager');
  for (var i = 0; i < pager.children.length; i++) {
    if (i === pageIndex) {
      pager.children[i].classList.add('active');
    } else {
      pager.children[i].classList.remove('active');
    }
  }
}

3. 完整示例代码

下面是一个完整的示例代码,包含了数据准备、HTML代码生成和分页效果的实现:

HTML部分:

<table>
  <thead>
    <tr>
      <th>ID</th>
      <th>姓名</th>
      <th>年龄</th>
    </tr>
  </thead>
  <tbody id="tableBody">
    <!--动态生成的table数据-->
  </tbody>
</table>
<div id="pager">
  <!--动态生成的分页按钮-->
</div>

JS部分:

var data = [
  {id: 1, name: '张三', age: 18},
  {id: 2, name: '李四', age: 20},
  {id: 3, name: '王五', age: 22},
  {id: 4, name: '赵六', age: 30},
  {id: 5, name: '钱七', age: 28},
  {id: 6, name: '孙八', age: 25},
  {id: 7, name: '周九', age: 21},
  {id: 8, name: '吴十', age: 19},
];
var pageSize = 3;
var totalPages = Math.ceil(data.length / pageSize);
//生成table数据和分页按钮
createTable(0);
createPager();
//生成table数据
function createTable(pageIndex) {
  var start = pageIndex * pageSize;
  var end = start + pageSize;
  var currentPageData = data.slice(start, end);
  var tableBody = document.getElementById('tableBody');
  tableBody.innerHTML = '';
  for (var i = 0; i < currentPageData.length; i++) {
    var rowHtml = '<tr><td>' + currentPageData[i].id + '</td><td>' + currentPageData[i].name + '</td><td>' + currentPageData[i].age + '</td></tr>';
    tableBody.innerHTML += rowHtml;
  }
}
//生成分页按钮
function createPager() {
  var pager = document.getElementById('pager');
  pager.innerHTML = '';
  for (var i = 0; i < totalPages; i++) {
    var btn = document.createElement('button');
    btn.textContent = i + 1;
    if (i === 0) {
      btn.classList.add('active');
    }
    btn.addEventListener('click', function () {
      var pageIndex = parseInt(this.textContent) - 1;
      createTable(pageIndex);
      updatePager(pageIndex);
    });
    pager.appendChild(btn);
  }
}
//更新分页按钮
function updatePager(pageIndex) {
  var pager = document.getElementById('pager');
  for (var i = 0; i < pager.children.length; i++) {
    if (i === pageIndex) {
      pager.children[i].classList.add('active');
    } else {
      pager.children[i].classList.remove('active');
    }
  }
}

以上就是JS代码实现table数据分页的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS代码实现table数据分页效果 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java String之contains方法的使用详解

    Java String 之 contains 方法使用详解 在 Java 中,String 类是最常用的类之一,而 String 类的 contains 方法则是其中常用的方法之一。本篇文章详细讲解了 Java String 类的 contains 方法使用的注意点以及示例演示。 contains 方法的作用 contains 方法的作用是判断某个字符串是否…

    Java 2023年5月26日
    00
  • Java实现基于token认证的方法示例

    我来为您讲解“Java实现基于token认证的方法示例”的完整攻略。 什么是token认证 Token认证是现在比较流行的Web应用程序认证方法之一。它能解决基于session认证的一些问题,比如跨站点请求伪造(CSRF)和分布式系统中的会话共享的问题。用户只需要通过用户名和密码一次验证,在服务器成功认证后,服务器会返回一个token给客户端。客户端在后续的…

    Java 2023年5月19日
    00
  • 利用Redis实现延时处理的方法实例

    关于如何利用Redis实现延时处理,可以采取以下步骤: 步骤1:安装和配置Redis 首先需要确保Redis服务器已经正确安装在本地或远程服务器上,并正确配置了Redis的相关参数。可以通过以下命令检查Redis服务器是否已安装: redis-cli ping 如果已经安装,会返回“PONG”字样。如果未安装,可以参考官方文档进行安装和配置:https://…

    Java 2023年5月26日
    00
  • Java SpringMVC实现自定义拦截器

    Java SpringMVC实现自定义拦截器 简介 在Java SpringMVC中,可以通过自定义拦截器来实现许多功能,例如登录验证、权限控制、日志记录等。通过拦截器,我们可以在请求到达Controller之前或之后对请求进行一些处理。在本文中,我们将讲解如何使用Java SpringMVC来实现自定义拦截器。 1. 创建拦截器 实现HandlerInte…

    Java 2023年6月15日
    00
  • 详解JNI到底是什么

    JNI全称为Java Native Interface,是Java语言与其他编程语言(如C、C++)进行交互的接口。JNI可以使Java程序通过调用本地(C、C++)编写的程序,实现高效的、与操作系统直接交互的功能。下面详细讲解JNI到底是什么,让你对JNI有更深刻的理解和认识。 什么是JNI? JNI是Java的一部分,是Java语言本身提供的一个开发工具…

    Java 2023年5月26日
    00
  • 基于JVM-jinfo的使用方式

    基于JVM的jinfo工具可以帮助我们在运行中的JVM进程中实时查看和修改指定Java进程的配置参数,以及输出JVM内部配置信息和线程堆栈信息等。 以下是使用jinfo的步骤: 步骤一:查看运行中的JVM进程 在使用jinfo工具前,需要先确认当前运行中的JVM进程PID。可以使用jps命令查看,例如: $ jps 2386 Bootstrap 2834 J…

    Java 2023年5月26日
    00
  • spring security中的csrf防御原理(跨域请求伪造)

    Spring Security 中的 CSRF(Cross-Site Request Forgery)攻击防御是非常重要的安全机制。在这个攻防机制中,Spring Security 通过在表单中添加或者 TkCooikeToken 的形式防御 CSRF 攻击,保障 Web 应用程序的安全。 CSRF 防御机制 CSRF 攻击利用用户在 Web 浏览器中处于登…

    Java 2023年5月20日
    00
  • SpringBoot实现物品收藏功能

    下面为你详细讲解如何使用 SpringBoot 实现物品收藏功能: 概述 使用 SpringBoot 可以简单快捷地实现 Web 应用的开发,本文将以 SpringBoot 为基础,使用 Maven 作为项目构建工具,使用 Thymeleaf 模板引擎渲染页面,使用 Hibernate 框架操作 MySQL 数据库,实现物品收藏功能。 前期准备 工具准备 I…

    Java 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部