分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

使用原生JS实现表格数据的翻页功能

发布时间:2023-09-06 02:34责任编辑:郭大石关键词:暂无标签

使用原生JS实现如下图所示表格数据的翻页功能:

 

HTML代码:

<body> ???<div id="title"> ???????<h1>表格标题</h1> ???</div> ???<table id="table" border="1"></table> ???<div id="pagination"> ???????<button id="prev">《</button> ???????<span id="pages"></span> ???????<button id="next">》</button> ???</div></body>

简单处理一下样式,CSS代码:

     #pagination { ???????????text-align: center; ???????} ???????#table { ???????????width: 800px; ???????????margin: 50px auto; ???????} ???????#table th { ???????????height: 35px; ???????} ???????#title { ???????????text-align: center; ???????} ???????button { ???????????padding: 5px; ???????????box-shadow: 0 0 5px #000; ???????}

JS部分:

第一步,数据生成,我是用mock.js随机生成的35条数据:

    let data = Mock.mock({ ???????????"person|35": [{ ???????????????"name": ‘@cname‘, ???????????????"gender": /^[男女]$/, ???????????????"age|18-22": 1, ???????????????"phone": /^1[\d]{10}$/, ???????????????"address": ‘@province‘ ???????????}] ???????})

第二步,获取DOM元素:

 ???????const table = document.getElementById(‘table‘); ???????const prev = document.getElementById(‘prev‘); ???????const next = document.getElementById(‘next‘); ???????const pages = document.getElementById(‘pages‘); ???

第三步,定义三个全局变量。

 ???????//默认设定每页十人 ???????let num1 = 10; ???????//定义一个变量保存每页真实应该展示的数量 ???????let num2; ???????//默认展示第一页 ???????let page = 1; ???

第四步,书写并调用渲染函数,用于渲染表格数据

 ???????const render = function () { ???????????table.innerHTML = ???????????????`<thead> ???????????<th>姓名</th> ???????????<th>性别</th> ???????????<th>年龄</th> ???????????<th>电话</th> ???????????<th>地址</th> ???????</thead>`; ???????????//判断当前选择的页码对应的人数 ???????????if (data.person.length - num1 * (page - 1) >= 10) { ???????????????num2 = 10; ???????????} else { ???????????????num2 = data.person.length - num1 * (page - 1); ???????????}
       //渲染该页对应的数据 ???????????for (let i = num1 * (page - 1); i < num2 + num1 * (page - 1); i++) { ???????????????table.innerHTML += ???????????????????`<tr> ???????????<th>${data.person[i].name}</th> ???????????<th>${data.person[i].gender}</th> ???????????<th>${data.person[i].age}</th> ???????????<th>${data.person[i].phone}</th> ???????????<th>${data.person[i].address}</th> ???????</tr>`; ???????????} ???????} ???????render(); ???

第五步,根据人数生成页码,将其封装成函数并调用

 ???const creatPages = function () { ???????????pages.innerHTML = ‘‘; ???????????for (let i = 0; i < Math.ceil(data.person.length / 10); i++) { ???????????????pages.innerHTML += ` <button data-page="${i+1}">${i+1}</button>` ???????????} ???} ???creatPages();

第六步,绑定左右及页码翻页按钮点击事件。每次点击事件后都要调用渲染函数

 ???????//绑定向前翻页事件 ???????prev.onclick = function () { ???????????if (page > 1) { ???????????????page--; ???????????????render(); ???????????} else { ???????????????alert(‘当前为第一页!‘) ???????????} ???????} ???????//绑定向后翻页事件 ???????next.onclick = function () { ???????????if (page < Math.ceil(data.person.length / 10)) { ???????????????page++; ???????????????render(); ???????????} else { ???????????????alert(‘当前为最后一页!‘) ???????????} ???????} ???????//绑定点击页码渲染相应的数据事件 ???????pages.addEventListener(‘click‘, function (e) { ???????????page = e.target.getAttribute(‘data-page‘); ???????????render(); ???????})

使用原生JS实现表格数据的翻页功能

原文地址:https://www.cnblogs.com/tengyijun/p/10465811.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved