利用js制作html table分页示例(js实现分页)

下面是利用 js 制作 HTML table 分页示例的攻略。

一、分页概述

分页是指将大量的记录拆分成若干个页面进行展示,以减轻页面压力,提高页面加载速度。在实际开发中,我们通常会使用后端语言来实现分页,比如常用的 PHP 分页。但是,为了提高用户体验,我们也可以使用前端语言 JavaScript 来实现分页。

具体的,我们可以使用js将数据分成若干页,然后通过点击页码,实现内容的切换。下面我们将详细介绍如何利用 js 实现 HTML table 分页功能。

二、实现步骤

1. 数据准备

首先,我们需要将数据按照分页的规则进行拆分。在实际开发中,我们通常会在后端将数据进行分页,然后将分好的页数一起传到前端。在这里,为了简单起见,我们假设我们已经获取到了如下格式的数据:

var data = [
  { id: 1, name: "张三", age: 18 },
  { id: 2, name: "李四", age: 22 },
  { id: 3, name: "王五", age: 30 },
  { id: 4, name: "赵六", age: 25 },
  // 省略后面的数据
  { id: 100, name: "陈十", age: 27 },
];

2. 渲染表格

接下来,我们需要根据数据来渲染我们的表格。代码如下:

function renderTable(data) {
  var table = document.createElement("table");

  // 渲染表头
  var tr = document.createElement("tr");
  for (var key in data[0]) {
    var th = document.createElement("th");
    th.innerText = key;
    tr.appendChild(th);
  }
  table.appendChild(tr);

  // 渲染数据
  for (var i = 0; i < data.length; i++) {
    var tr = document.createElement("tr");
    for (var key in data[i]) {
      var td = document.createElement("td");
      td.innerText = data[i][key];
      tr.appendChild(td);
    }
    table.appendChild(tr);
  }

  document.body.appendChild(table);
}

3. 实现分页

我们需要根据表格中的总条数和每页显示的条数来计算总页数。代码如下:

var pageSize = 10; // 每页显示的条数
var pageNum = Math.ceil(data.length / pageSize); // 总页数

计算出总页数之后,接下来我们需要实现翻页功能。具体步骤如下:

  1. 给每个页码添加点击事件,点击时显示对应的页码内容。

  2. 根据当前页码和每页显示的条数,计算出当前页需要渲染的数据。这里我们使用了 Array.slice() 方法来获取对应的数据。

javascript
var start = (page - 1) * pageSize;
var end = page * pageSize;
var currentPageData = data.slice(start, end);

综合以上步骤,实现具体代码如下:

var currentPage = 1; // 当前页码
var pageSize = 10; // 每页显示的条数
var pageNum = Math.ceil(data.length / pageSize); // 总页数

renderTable(data.slice(0, pageSize)); // 默认显示第一页

// 渲染页码
var pageNav = document.createElement("div");
pageNav.style.textAlign = "center";
for (var i = 1; i <= pageNum; i++) {
  var a = document.createElement("a");
  a.href = "javascript:;";
  a.innerText = i;
  if (i === currentPage) {
    a.style.color = "red";
  }
  a.onclick = (function (page) {
    return function () {
      currentPage = page;
      renderTable(data.slice((page - 1) * pageSize, page * pageSize));
      updatePageNav();
    };
  })(i);
  pageNav.appendChild(a);
}

document.body.appendChild(pageNav);

// 渲染页码状态
function updatePageNav() {
  for (var i = 0; i < pageNav.children.length; i++) {
    if (+pageNav.children[i].innerText === currentPage) {
      pageNav.children[i].style.color = "red";
    } else {
      pageNav.children[i].style.color = "black";
    }
  }
}

上面的代码中,我们使用 Array.slice() 截取需要渲染的数据,然后渲染对应的表格,最后使用 updatePageNav() 方法更新页码状态。

4. 完整代码

下面是完整的实现代码:

var data = [
  { id: 1, name: "张三", age: 18 },
  { id: 2, name: "李四", age: 22 },
  { id: 3, name: "王五", age: 30 },
  { id: 4, name: "赵六", age: 25 },
  // 省略后面的数据
  { id: 100, name: "陈十", age: 27 },
];

var currentPage = 1; // 当前页码
var pageSize = 10; // 每页显示的条数
var pageNum = Math.ceil(data.length / pageSize); // 总页数

renderTable(data.slice(0, pageSize)); // 默认显示第一页

// 渲染表格
function renderTable(data) {
  var table = document.createElement("table");

  // 渲染表头
  var tr = document.createElement("tr");
  for (var key in data[0]) {
    var th = document.createElement("th");
    th.innerText = key;
    tr.appendChild(th);
  }
  table.appendChild(tr);

  // 渲染数据
  for (var i = 0; i < data.length; i++) {
    var tr = document.createElement("tr");
    for (var key in data[i]) {
      var td = document.createElement("td");
      td.innerText = data[i][key];
      tr.appendChild(td);
    }
    table.appendChild(tr);
  }

  document.body.appendChild(table);
}

// 渲染页码
var pageNav = document.createElement("div");
pageNav.style.textAlign = "center";
for (var i = 1; i <= pageNum; i++) {
  var a = document.createElement("a");
  a.href = "javascript:;";
  a.innerText = i;
  if (i === currentPage) {
    a.style.color = "red";
  }
  a.onclick = (function (page) {
    return function () {
      currentPage = page;
      renderTable(data.slice((page - 1) * pageSize, page * pageSize));
      updatePageNav();
    };
  })(i);
  pageNav.appendChild(a);
}
document.body.appendChild(pageNav);

// 渲染页码状态
function updatePageNav() {
  for (var i = 0; i < pageNav.children.length; i++) {
    if (+pageNav.children[i].innerText === currentPage) {
      pageNav.children[i].style.color = "red";
    } else {
      pageNav.children[i].style.color = "black";
    }
  }
}

三、示例说明

下面通过两个示例说明如何使用 JS 实现 HTML table 分页功能。

示例一:使用 Bootstrap 分页组件

Bootstrap 是一个前端开发框架,提供了很多实用的组件,包括分页组件。我们可以在分页组件中设置总页数和每页显示的条数,然后自动渲染相应的页码。具体步骤如下:

  1. 引入 Bootstrap 样式文件(CDN 或本地文件均可)。

  2. 在 HTML 中添加分页组件代码。

```html

```

  1. 在 JS 中初始化分页组件。

```javascript
var currentPage = 1; // 当前页码
var pageSize = 10; // 每页显示的条数
var pageNum = Math.ceil(data.length / pageSize); // 总页数

$(".pagination").bootstrapPaginator({
totalPages: pageNum,
visiblePages: 5,
currentPage: currentPage,
onPageChanged: function (event, oldPage, newPage) {
currentPage = newPage;
renderTable(data.slice((newPage - 1) * pageSize, newPage * pageSize));
},
});
```

示例二:使用 Layui 分页组件

Layui 是一个国内流行的前端框架,也提供了分页组件。和 Bootstrap 类似,我们也可以在分页组件中设置总页数和每页显示的条数,然后自动渲染相应的页码。具体步骤如下:

  1. 引入 Layui 样式文件和 JS 文件(CDN 或本地文件均可)。

  2. 在 HTML 中添加分页组件代码。

```html

```

  1. 在 JS 中初始化分页组件。

```javascript
var currentPage = 1; // 当前页码
var pageSize = 10; // 每页显示的条数
var pageNum = Math.ceil(data.length / pageSize); // 总页数

layui.use("laypage", function () {
layui.laypage.render({
elem: "page",
count: data.length,
limit: pageSize,
groups: 5,
curr: currentPage,
jump: function (obj, first) {
if (!first) {
currentPage = obj.curr;
renderTable(data.slice((obj.curr - 1) * pageSize, obj.curr * pageSize));
}
},
});
});
```

四、总结

以上就是利用 JS 实现 HTML table 分页功能的攻略和示例。在实际开发中,我们可以根据实际情况选择使用 Bootstrap、Layui、jQuery 等框架和库来简化代码编写。同时,我们还可以通过对分页组件进行自定义,来实现更多的分页效果和交互。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用js制作html table分页示例(js实现分页) - Python技术站

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

相关文章

  • Java异常处理中的各种细节汇总

    Java异常处理中的各种细节汇总 异常处理是Java中非常重要的一个主题。本文将详细讲解Java异常处理中的细节,并以示例进行说明。 什么是异常? 异常是程序在运行时出现的一种错误。Java中的异常可以分为编译时异常和运行时异常。编译时异常必须在代码中进行处理或声明抛出,否则编译无法通过;运行时异常则可以不进行处理或声明抛出。 异常处理的方法 Java中的异…

    Java 2023年5月27日
    00
  • 送电子书福利啦!

    过去若干年,一边工作编程,一边思考提炼,写了一些关于“写整洁业务代码”的文章,在随笔分类“代码修行”下。有一天在公司文档空间分享时,突然想到:可以制作一本电子书,将过往的重要经验总结起来,也是对自己十年编程生涯的一个阶段性回顾,作为继续前进的阶梯。 我的第一本电子书 书名:《代码修行:一步一步写出整洁的业务代码》 链接: https://pan.baidu.…

    Java 2023年5月7日
    00
  • 关于Spring Data Jpa 自定义方法实现问题

    关于Spring Data JPA自定义方法实现问题的攻略,一般需要遵循以下步骤: 创建Repository 首先,需要定义一个继承自JpaRepository的Repository,并在其中声明需要自定义的方法。一个基本的Repository示例如下: package com.example.repository; import com.example.d…

    Java 2023年5月20日
    00
  • java list常用方法总结

    Java List常用方法总结 在Java开发中,List是一种非常常用的容器类型。List通常用于存储一组元素,并且可以动态地添加、删除、修改和访问这些元素。本文总结了Java List常用的方法,希望对你的开发有所帮助。 List的常用方法 1. add() add()方法用于向List中添加一个元素。语法如下: boolean add(E e) 其中,…

    Java 2023年5月26日
    00
  • Java经典面试题汇总:Mybatis

    Java经典面试题汇总:Mybatis MyBatis是Java中一款非常流行的持久层框架,是Apache下的一个开源项目,它提供了使用Java对象来映射数据库操作的ORM框架,封装了原始的JDBC访问,让使用者能够更加方便的使用数据库。本篇文章将介绍MyBatis常见的面试题及其详细解析。 1. MyBatis的使用及原理 1.1 MyBatis的使用 首…

    Java 2023年5月20日
    00
  • Java之字节码以及优势案例讲解

    Java之字节码以及优势案例讲解 什么是Java字节码? Java字节码是Java源代码编译后得到的二进制字节码文件,其扩展名为.class,使用JVM(Java虚拟机)来运行。相比于源代码,Java字节码更加节省空间,并且可以跨平台运行。 Java字节码可以通过反编译工具获取到其源代码,但是由于编译后的代码进行了优化,所以反编译后的源代码可能不太容易阅读。…

    Java 2023年5月27日
    00
  • Java的JSON转换库GSON的基本使用方法示例

    下面是针对Java的JSON转换库GSON的基本使用方法示例的完整攻略。 简介 GSON是由Google开发的一个Java库,用于将Java对象与JSON数据之间进行序列化和反序列化。通过使用GSON,我们可以将Java对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为相应的Java对象。 引入依赖 在使用GSON之前,我们需要先将其添加到项…

    Java 2023年5月26日
    00
  • Java多线程优化方法及使用方式

    Java多线程优化方法及使用方式 为什么要使用多线程? 在单线程程序中,任务是按照顺序依次执行的。当我们需要处理较大的数据量或频繁地进行I/O操作时,单线程程序会带来很多问题。在这种情况下,使用多线程技术可以提高程序的性能和响应速度。具体而言,多线程可以带来以下好处: 提高CPU的利用率,从而加快程序运行速度; 可以利用多核CPU的优势,使各个线程之间互不干…

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