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

yizhihongxing

下面是利用 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日

相关文章

  • 如何通过eclipse web项目导入itellij idea并启动

    将Eclipse Web项目导入IntelliJ IDEA并启动,可参考以下步骤: 1. 导入Eclipse Web项目 在IntelliJ IDEA中,选择“File” -> “New” -> “Project from Existing Sources”。 在弹出的“Import Project”对话框中,选择Eclipse项目所在的文件夹,…

    Java 2023年6月15日
    00
  • Java的Hibernate框架数据库操作中锁的使用和查询类型

    对于Java的Hibernate框架数据库操作中锁的使用和查询类型,我们需要掌握如下几个方面: 为什么使用锁? 在并发访问的情况下,多个客户端会同时对同一个数据库进行操作,如果不加锁就有可能会发生多用户同时修改同一条记录而导致数据不一致的问题,而加锁就可以使得同一时刻只有一个用户对同一个记录进行操作,避免了并发修改引起的不一致性问题。 如何使用锁? 在Hib…

    Java 2023年5月19日
    00
  • 基于Java字符串 “==” 与 “equals” 的深入理解

    当我们在Java中使用字符串时,经常会遇到判断两个字符串是否相等的情况。在这种情况下,通常有两种方式进行比较:使用 “==” 或者使用 “equals”。然而,这两种方式有什么不同?为什么我们不能总是使用 “==” 进行比较? “==” 和 “equals” 的区别 在Java中,”==” 运算符用于比较两个对象是否是同一个对象,即它们是否指向内存中的同一个…

    Java 2023年5月27日
    00
  • 微信小程序 springboot后台如何获取用户的openid

    首先,我们需要了解一下微信小程序的认证流程和openid的概念。 在用户使用微信小程序时,小程序会向微信服务器发送登录请求,微信服务器会返回给小程序一个特有的code参数。小程序前端拿到这个code参数后,需要发送一个HTTP请求到我们的后台服务器,我们的后台服务器再使用这个code参数向微信服务器发送请求,获取用户的openid。 openid是微信中用于…

    Java 2023年5月23日
    00
  • JAVA算法起步之快速排序实例

    JAVA算法起步之快速排序实例 什么是快速排序 快速排序是一种十分高效的排序算法,采用分治的策略,对于数据量大的随机数组,快速排序是目前已知的最快的排序算法之一。它的基本思路是:通过一趟排序将待排序列分成两部分,一部分比基准元素小,一部分比基准元素大,然后再递归地对这个两部分进行快速排序,以达到整个序列有序的目的。 快速排序的基本步骤 从数列中挑出一个元素,…

    Java 2023年6月1日
    00
  • @Controller、@RestController注解区别详解

    下面是关于“@Controller、@RestController注解区别详解”的完整攻略。 一、@Controller注解 @Controller是SpringMVC中常用的控制器注解,用于标记此类为控制器,能够处理用户的请求并返回相应的数据。 1.1 示例代码 @Controller @RequestMapping("/hello")…

    Java 2023年6月15日
    00
  • eclipse中怎么去掉xml/js验证?

    为了去掉Eclipse中的XML和JS验证,需要按照以下步骤进行操作: 打开Eclipse,并选择菜单“Window -> Preferences” 在“Preferences”窗口中,选择“Validation”选项。 在“Validation”选项卡中,取消选中“Build automatically”复选框。 在下方的“Validators”列表…

    Java 2023年6月15日
    00
  • 使用maven-assembly-plugin如何打包多模块项目

    使用maven-assembly-plugin打包多模块项目需要分为以下几个步骤: 在父项目中添加maven-assembly-plugin插件,并对子模块的打包进行配置; 子模块中添加打包所需相关资源,并配置打包信息。 下面提供两个示例来更清晰地讲解上述步骤。 示例1: 假设我们有一个项目,该项目包含一个父项目和两个子模块:模块A和模块B。我们希望使用ma…

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