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日

相关文章

  • springmvc 传递和接收数组参数的实例

    SpringMVC传递和接收数组参数的实例 在SpringMVC中,我们可以使用@RequestParam注解来传递和接收数组参数。下面是一个示例代码,演示如何传递和接收数组参数。 示例代码 @RestController @RequestMapping("/api") public class MyController { @GetMa…

    Java 2023年5月18日
    00
  • Java Hibernate中的持久化类和实体类关系

    Java Hibernate是一个用于持久化Java对象的框架。持久化类和实体类是Hibernate所涉及到的两个重要概念。本文将通过详细讲解持久化类和实体类的概念、关系及其使用方法,帮助读者更好地理解Hibernate框架的使用方法。 持久化类和实体类的概念 持久化类是指可以被保存到数据库中的Java类。这些Java类通常被映射到数据库中的表,其中每个属性…

    Java 2023年5月20日
    00
  • 浅谈Java代码的 微信长链转短链接口使用 post 请求封装Json(实例)

    这里给出详细的攻略。 1. 背景介绍 微信公众号开发中,经常会使用到微信接口进行开发,其中短链接转化也是很常见的操作。本篇文章主要介绍如何使用 Java 代码封装微信长链接转短链接接口,使用 post 请求,并将返回结果封装为 JSON 数据。 2. 实现步骤 2.1. 导入相关 jar 包 使用 HttpClient 可以方便地发送 post 请求,并获取…

    Java 2023年5月26日
    00
  • Tomcat 与 maven 的安装与使用教程

    Tomcat 与 Maven 的安装与使用教程 Tomcat 是一个常用的 Java Web 应用程序的部署容器,Maven 是一个常用的 Java 项目构建工具,在 Java 开发中两者经常被用到。下面是 Tomcat 和 Maven 的安装及使用教程。 1. 安装 Tomcat Tomcat 的官方网站是 http://tomcat.apache.org…

    Java 2023年5月19日
    00
  • C#/Java连接sqlite与使用技巧

    C#/Java连接SQLite 简介 SQLite是一种轻型的关系数据库管理系统,可以在各种操作系统上运行。由于其占用空间小、处理数据速度快、易于集成、可移植性好等优点,越来越多的开发者选择应用它。C#和Java是常用的编程语言,以下将介绍如何用它们连接SQLite,以及如何使用SQLite相关技巧。 C#连接SQLite 准备工作 要使用SQLite连接C…

    Java 2023年5月20日
    00
  • 牛客网BC115—超级圣诞树(java)

    和女朋友坐一块的时候,突然想到了,哈哈哈哈哈 不会很难!!!   import java.util.*; import java.lang.Math; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scann…

    Java 2023年4月17日
    00
  • Spring 整合 Hibernate 时启用二级缓存实例详解

    我会给出一个详细的“Spring 整合 Hibernate 时启用二级缓存实例详解”的攻略。在这个攻略中,我会从以下几个方面来进行阐述: 为什么在整合 Spring 和 Hibernate 时需要使用二级缓存? 什么是二级缓存?Spring 如何支持 Hibernate 的二级缓存? 如何在Spring 和Hibernate 中启用二级缓存? 通过两个示例来…

    Java 2023年5月19日
    00
  • java使用多线程读取超大文件

    以下是详细讲解 Java 使用多线程读取超大文件的完整攻略: 一、背景介绍 我们在处理大文件时,如果采用单线程读取文件,读取速度会非常慢,而且有可能会导致内存溢出。因此我们可以采用多线程的方式进行文件读取。 二、多线程读取文件 1. 读取文件流 首先,我们要将文件读入到内存中。这里我们使用 Java 的 FileInputStream 类来实现文件读取。示例…

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