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日

相关文章

  • SpringBoot实现其他普通类调用Spring管理的Service,dao等bean

    实现其他普通类调用Spring管理的Service、DAO等Bean,可以使用Spring提供的上下文(ApplicationContext)对象,通过该对象获取Bean实例,从而实现Bean的调用。其中,SpringBoot在启动时会自动装载ApplicationContext对象,因此我们只需要获取ApplicationContext即可使用这个功能。 …

    Java 2023年6月15日
    00
  • Java Timer与TimerTask类使程序计时执行

    要使用Java Timer与TimerTask类使程序计时执行,需要遵循以下步骤: 步骤一:导入相关类库 要使用Java Timer和TimerTask类,需要在代码中导入相关类库,例如: import java.util.Timer; import java.util.TimerTask; 步骤二:创建任务定时器 要使用Java Timer和TimerTa…

    Java 2023年6月1日
    00
  • Java SpringBoot 中的操作事务

    Java Spring Boot中的操作事务 在Java Spring Boot中,事务是一种非常重要的机制,它可以确保数据库操作的一致性和完整性。本文将介绍Java Spring Boot中的操作事务的完整攻略,包括事务的基本概念、事务的使用方法、事务的传播机制和事务的示例。 1. 事务的基本概念 事务是指一组数据库操作,这些操作要么全部执行成功,要么全部…

    Java 2023年5月14日
    00
  • 如何处理Java异常链?

    处理Java异常链是在应对程序异常时必不可少的一项技能。异常链是指在异常发生时,异常会以层层嵌套的形式传递,形成异常链,最后被抛出异常的信息即为异常链中最顶层的异常信息。在处理异常时,需要对这条异常链进行处理,以实现对异常的精准定位和有效处理。下面是详细的处理异常链攻略: 捕获异常时,记录日志 无论是哪个层面的异常,都需要尽可能地记录日志,以便于回溯调试。在…

    Java 2023年4月27日
    00
  • 下载站常用的点击下载地址提示设hao123为首页的js代码

    下载站常用的点击下载地址提示设hao123为首页的js代码,可以帮助网站引导用户将hao123设为浏览器的主页,从而提升网站的用户使用体验。下面是这个js代码的完整攻略。 在HTML文件中引入js文件 在标签中添加以下代码: <script src="js/hao123.js"></script> 注意:这里的路径…

    Java 2023年6月16日
    00
  • Java如何使用Set接口存储没有重复元素的数组

    首先,Set接口是Java中的一个集合接口,它继承自Collection接口,而不同于Collection接口,Set接口中的元素是不允许重复的,因为Set中的数据结构一般是使用哈希表来实现的,哈希表的特性就是保证元素的唯一性。 以下是Java如何使用Set接口存储没有重复元素的数组的完整攻略: 创建Set对象 我们可以使用Java中的HashSet类来创建…

    Java 2023年5月26日
    00
  • 同步的作用是什么?

    以下是关于同步的作用的完整使用攻略: 同步的作用是什么? 同步是指多个线程之间按照一定的顺序执行,以避免出现数据竞争和一致的情况。在多线程编程中,同步是非常重要的,因为多个线程同时访问共享资源时,可能会导数据的不一致性和程序的错误。 同步的作用 同步的作用主要有以下几个方面: 避免数据竞争:当多个线程同时访问共享资源时可能会导致的不一致性程序的错误。同步可以…

    Java 2023年5月12日
    00
  • OpenCms 带分页的新闻列表

    OpenCms 带分页的新闻列表攻略 介绍 OpenCms 是一款基于 Java 开发的内容管理系统,适用于企业网站、入口门户、在线商店、电子杂志、社区等多种应用场景。在 OpenCms 中,我们可以非常方便地实现带分页的新闻列表,方便用户对海量新闻进行分类浏览和查询。 实现步骤 第一步:创建模板文件 在 OpenCms 中,我们需要创建一个模板文件来定义新…

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