最详细的JS动态创建表格以及实现分页!

直接复制html代码然后把注释的放开就是图一的效果了,

生成表格

=================================================================

写完了静态的html,那么接下来先渲染表格,这是表格的html代码

小区编码 小区名称

因为要动态获取表格的高度所以外面加了个盒子。

这是动态生成表格高度的代码

let tableHeight = document.getElementById(“table-box”)

tableHeight.style.height = data.length * 30(每条数据的高度)+ 40(thead的高度) + “px” //data.length为每页有多少条数据。

接下来动态生成表格的js代码

for (let i = 0; i < data.length; i++) { //data为后端返回的数据

var html = “”;

html += `

<input type=“radio” class=“check-radio” name=“radio-group”

data-isCheck=“${data[i].id == tableList.id ? ‘isCheck’ : ‘’}” >

${data[i].id} ${data[i].Name} `;

$(‘#tbody’).append(html);

$(‘input[data-isCheck=“isCheck”]’).attr(“checked”, true); //true为选择,false为取消选择

}

生成了表格后的页面

在这里插入图片描述

单选框选择触发事件用这个方法

// 根据单选框触发是否提交事件!

$(‘input:radio.check-radio’).change(function () {

console.log(this) //里面自己写需要的功能

})

搜索功能

=================================================================

接下来搜索功能,在主函数中定义searchList()这个方法

searchList() {

let searchInput = document.getElementById(“search-input”)

searchInput.addEventListener(“keyup”, function (event) { //搜索用的键盘回车事件

event.preventDefault();

let searchValue = $(“#search-input”).val()

if (event.keyCode === 13) {

let data = searchValue

getTableList(data, 1) //getTableList为表格查询请求接口的方法

}

});

},

这里就实现了搜索功能,效果看图

在这里插入图片描述

表格下面的功能

====================================================================

接下来实现表格下面的功能,html代码

    跳转

    实现之前要先定义一个对象来储存页码信息

    var pageList= { //不要在意名字===/_/

    pageNo: 1, //当前页

    pageSize: 10, //一页多少条,我这里写死了的没有涉及到改变展示页数

    pageCount: 0, //总共多少条

    pageTotal: 0, //总共多少页

    pagingShowNum: [] //展示的页码数组成的数组

    };

    var newPagingShowNum=[] //定义一个新的页码数组成的数组,来装页码

    并在请求到后端返回的接口数据中初始化pageObj 对象

    pageList.pageNo = data.pageNum //当前页

    pageList.pageCount = data.count //总共多少条数据

    pageList.pageTotal = Math.ceil(pageList.pageCount / pageList.pageSize) //总共多少页

    左下的页码展示


    实现动态生成左下的页码展示

    $(“#page-text”).append(`

    当前第KaTeX parse error: Expected 'EOF', got '#' at position 48: … style="color: #̲a2a2a2">{pageList.pageCount}条,共${pageList.pageTotal}页

    `)

    效果图

    在这里插入图片描述

    分页


    接下来实现分页,分页有点复杂,当显示到中间时效果如图

    在这里插入图片描述

    因为我做的分页只展示四条数据,涉及到小于五条与大于四条分页时两种情况。

    定义pagingShowNum

    if (pageList.pageTotal <= 5) {

    for (let i = 0; i < pageList.pageTotal; i++) {

    pageList.pagingShowNum[i] = i + 1

    }

    } else {

    for (let i = 0; i < 4; i++) { //最长显示五页

    pageList.pagingShowNum[i] = i + 1

    }

    pageList.pagingShowNum[pageList.pagingShowNum.length - 1] = pageList.pageTotal

    }

    动态生成分页的js代码

    if (pageList.pageTotal <= 5) {//小于五条的情况

    $(“.pagination”).append(`

    • «

    • 1
    • »

      `)

      for (let i = 1; i < pageList.pagingShowNum.length; i++) {

      if (pageList.pagingShowNum[i]) {

      $(“#page-div”).append(`

      ${pageList.pagingShowNum[i]}

      `)

      }

      }

      } else { }//大于四条的情况

      当页数大于4条时就要考虑生成…来隐藏没有展示的代码

      $(“.pagination”).append( `

    • «

    • 1
    • ${pageList.pageTotal}
    • »

      `)

      $(‘#page-div’).after(`

    • ...
    • `); //右边省略号

      $(‘#page-div’).before(`

    • ...
    • `); //左边省略号

      for (let i = 1; i < pageList.pagingShowNum.length - 1; i++) {

      if (newPagingShowNum.length != 0) {

      pageList.pagingShowNum[1] = newPagingShowNum[1]

      pageList.pagingShowNum[2] = newPagingShowNum[2]

      $(“#page-div”).append(`

      ${pageList.pagingShowNum[i]}`)

      } else {

      if (pageList.pagingShowNum[i]) {

      $(“#page-div”).append(`

      ${pageList.pagingShowNum[i]}

      `)

      }

      }

      }

      if (pageList.pagingShowNum[2] < 4) {

      $(“.ellipsis-left”).hide() //中间页面小于4,左边省略号隐藏

      }

      if (pageList.pagingShowNum[2] > pageList.pageTotal - 2) {

      $(“.ellipsis-right”).hide() //中间页面大于最大页码-2,右边省略号隐藏

      }

      右边省略号展开

      $(“.ellipsis-right”).on(“click”, function () {

      $(“#page-div”).empty()

      if (pageList.pagingShowNum[2] < pageList.pageTotal - 2) {

      pageList.pagingShowNum[1] = pageList.pagingShowNum[1] + 2

      pageList.pagingShowNum[2] = pageList.pagingShowNum[2] + 2

      } else { //点到最右边是[1,…,total-2,total-1,total]

      pageList.pagingShowNum[1] = pageList.pageTotal - 2

      pageList.pagingShowNum[2] = pageList.pageTotal - 1

      $(“.ellipsis-right”).hide()

      }

      if (pageList.pagingShowNum[2] == pageList.pageTotal - 1) {

      $(“.ellipsis-right”).hide()

      }

      if (pageList.pagingShowNum[1] > 3) {

      $(“.ellipsis-left”).show()

      }

      for (let i = 1; i < pageList.pagingShowNum.length - 1; i++) {

      if (pageList.pagingShowNum[i]) {

      $(“#page-div”).append(`

      ${pageList.pagingShowNum[i]}

      `)

      }

      }

      newPagingShowNum= pageList.pagingShowNum

      })

      在这里插入图片描述

      左边省略号展开

      $(“.ellipsis-left”).on(“click”, function () {

      $(“#page-div”).empty()

      if (pageList.pagingShowNum[1] > 3) {

      pageList.pagingShowNum[1] = pageList.pagingShowNum[1] - 2

      pageList.pagingShowNum[2] = pageList.pagingShowNum[2] - 2

      $(“.ellipsis-right”).show()

      } else { //点到最左边是[1,2,3,…,total]

      pageList.pagingShowNum[1] = 2

      pageList.pagingShowNum[2] = 3

      }

      if (pageList.pagingShowNum[1] < 3) {

      $(“.ellipsis-left”).hide()

      }

      for (let i = 1; i < pageList.pagingShowNum.length - 1; i++) {

      if (pageList.pagingShowNum[i]) {

      $(“#page-div”).append(`

      ${pageList.pagingShowNum[i]}

      `)

      }

      }

      newPagingShowNum = pageList.pagingShowNum

      })

      在这里插入图片描述

      页码选择

      $(“#page-div”).on(“click”, function (e) {

      if (e.target.classList.value.includes(“page-a”)) {

      let pageNum = Number(e.target.text)

      JavaScript 和 ES6

      在这个过程你会发现,有很多 JS 知识点你并不能更好的理解为什么这么设计,以及这样设计的好处是什么,这就逼着让你去学习这单个知识点的来龙去脉,去哪学?第一,书籍,我知道你不喜欢看,我最近通过刷大厂面试题整理了一份前端核心知识笔记,比较书籍更精简,一句废话都没有,这份笔记也让我通过跳槽从8k涨成20k。

      JavaScript部分截图

      开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

    • 30
      点赞
    • 14
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    ### 回答1: 在layui中,可以使用table模块来实现表格的动态分页。下面是一个简单的示例: HTML代码: ```html <table id="demo" lay-filter="test"></table> ``` JavaScript代码: ```javascript layui.use(['table'], function(){ var table = layui.table; //执行渲染 table.render({ elem: '#demo', //绑定元素 url: '/api/data', //数据接口 page: true, //开启分页 cols: [[ //表头 {field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}, {field: 'username', title: '用户名', width:120}, {field: 'email', title: '邮箱', width:150}, {field: 'sex', title: '性别', width:80, sort: true}, {field: 'city', title: '城市', width:100}, {field: 'sign', title: '签名', width:200}, {field: 'experience', title: '积分', width:80, sort: true}, {field: 'score', title: '评分', width:80, sort: true}, {field: 'classify', title: '职业', width:100}, {field: 'wealth', title: '财富', width:135, sort: true}, {fixed: 'right', title:'操作', toolbar: '#barDemo', width:150} ]] }); }); ``` 在上面的示例代码中,我们使用了table模块的render方法来渲染表格。其中,url参数指定了数据接口的地址,page参数开启了分页功能,cols参数定义了表头和列数据。在实际应用中,你需要根据自己的情况修改这些参数。 另外,如果你需要在表格中添加操作列,可以使用laytpl模块来实现。下面是一个示例代码: HTML代码: ```html <script type="text/html" id="barDemo"> <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> </script> ``` JavaScript代码: ```javascript layui.use(['table', 'laytpl'], function(){ var table = layui.table, laytpl = layui.laytpl; //执行渲染 table.render({ elem: '#demo', //绑定元素 url: '/api/data', //数据接口 page: true, //开启分页 cols: [[ //表头 {field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}, {field: 'username', title: '用户名', width:120}, {field: 'email', title: '邮箱', width:150}, {field: 'sex', title: '性别', width:80, sort: true}, {field: 'city', title: '城市', width:100}, {field: 'sign', title: '签名', width:200}, {field: 'experience', title: '积分', width:80, sort: true}, {field: 'score', title: '评分', width:80, sort: true}, {field: 'classify', title: '职业', width:100}, {field: 'wealth', title: '财富', width:135, sort: true}, {fixed: 'right', title:'操作', toolbar: '#barDemo', width:150} ]] }); //监听工具条 table.on('tool(test)', function(obj){ var data = obj.data; if(obj.event === 'del'){ layer.confirm('真的删除行么', function(index){ obj.del(); layer.close(index); }); } else if(obj.event === 'edit'){ laytpl($('#editTpl').html()).render(data, function(html){ layer.open({ type: 1, title: '编辑用户', content: html, area: ['400px', '300px'], btn: ['保存', '取消'], yes: function(index, layero){ //保存操作 layer.close(index); }, btn2: function(index, layero){ //取消操作 } }); }); } }); }); ``` 在上面的示例代码中,我们定义了一个id为barDemo的模板,用来渲染操作列。在监听工具条事件时,我们可以通过laytpl模块来渲染编辑弹窗的内容。 ### 回答2: Layui是一个基于JavaScript前端框架,可以用来构建现代化的Web界面。在Layui中,可以很方便地实现表格的动态分页。 首先,我们需要引入Layui的相关资源文件,如css和js文件。接着,在HTML中创建一个包含表格的容器,比如一个div标签,并给它一个唯一的id。 然后,在JavaScript中,通过调用Layui的table模块的render方法来渲染表格。在调用render方法时,需要指定表格的选择器和相关配置参数。 在配置参数中,我们需要设置表格的数据接口,即从服务器端获取表格数据的URL地址。通过设置URL地址,Layui会自动发送一个GET请求到该URL,并获取服务器返回的数据。 在服务器端,我们需要根据请求的参数,比如当前页码和每页显示的数据量,从数据库中获取对应的数据,并返回给客户端。 Layui还提供了一些其他的配置参数,比如设置表格的列信息、每页显示的数据量、是否显示分页等。我们可以根据需求来定制这些参数。 当表格数据获取到之后,Layui会将数据渲染到表格中,并自动根据配置参数显示分页器。通过点击分页器上的页码,可以切换表格的当前页。 总结起来,通过Layui的table模块的render方法,我们可以很方便地实现表格的动态分页。通过设置相关配置参数,我们可以自定义表格的列信息、每页显示的数据量等。这样,我们可以在前端页面中通过分页器来切换表格的不同页码,从而实现动态分页功能。 ### 回答3: Layui是一款基于HTML5和CSS3的前端框架,它提供了丰富的组件和模块,方便开发人员快速搭建界面。要实现表格动态分页,可以使用Layui提供的表格组件和分页组件。 首先,需要引入Layui的相关文件,包括layui.js、layui.css和lay/modules/table.js等文件。 接着,在HTML中创建一个table元素,并为其加上id属性,例如: ``` <table id="demo" lay-filter="test"></table> ``` 然后,在JavaScript中初始化表格和分页组件,设置相应的参数: ``` layui.use(['table', 'laypage'], function(){ var table = layui.table; var laypage = layui.laypage; // 渲染表格 table.render({ elem: '#demo', url: '/api/data', // 数据接口 page: true, // 开启分页 limit: 10, // 每页显示的条数 cols: [[ // 表头 {field: 'id', title: 'ID', width: 80}, {field: 'name', title: '姓名', width: 120}, {field: 'age', title: '年龄', width: 80}, {field: 'city', title: '城市', width: 150} ]] }); // 监听分页组件 laypage.render({ elem: 'test', count: 100, // 总条数 limit: 10, // 每页显示的条数 curr: location.hash.replace('#!page=', ''), // 获取hash值作为当前页 hash: 'page', // 自定hash值 jump: function(obj, first){ // 首次不执行 if(!first){ // 更新表格数据 table.reload('demo', { where: { page: obj.curr // 更新当前页 } }); } } }); }); ``` 以上代码示例中,url参数指定了获取数据的接口,cols参数定义了表格的列,count参数定义了数据总条数,jump回调函数监听了分页组件的变化,当页码改变时,会执行回调函数,并通过table.reload方法重新加载表格数据。 总结起来,要使用Layui实现表格动态分页,需要初始化表格和分页组件,并监听分页组件的变化来重新加载表格数据。

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值