zoukankan      html  css  js  c++  java
  • 浅谈js中如何动态添加表头/表列/表格内容

    我想很多童鞋用js动态向表格中添加数据很熟悉,而且也觉得非常简单!是的,对于写页面的童鞋来说,最喜欢写查询的页面了,动态向表格绑定数据。用for循环就可以轻松搞定。

    如果我们的业务需求有所变化,可能我们要的数据就不是这样一条一条的中规中矩的。如果你还是新手,又没有人教你,在网上又搜不到方法,可以告诉你一个简便的方法,那就是让后台写服务的同事在后台把数据拼接好返回给你,当然了,这种无理的要求一般大部分会遭到拒绝的,那怎么办呢?动脑子了。。。

    下面列举一下我经常遇到的一些表格格式:

    1. 固定的表头,固定的列数据

    这种的话是最简单不过的了,后台丢给你的数据也是一条一条的,你只要按顺序去绑定就可以了

    2. 固定的表头,列数据不固定

    这种的话,对于没写过的童鞋来说,刚开始可能有点手足无措,但是一旦方法找到了,就会发现没有什么难度了,这样的情况中,一般数据都是以单元格形式一条条的返回的。也就是给你的数据,可能是只能填充一个单元格的,这样的情况一般出现在统计表格中。那要如何去遍历后台返回的数据,然后正确的填充表格中去呢?

    我的方法是这样的,首先表头是固定的,这就好办了,这样的话,你就先把表头写好,每个表头给一个相应的class用来区分。然后给的列数据当中,第一行中肯定有一个唯一的id,一般这种都是以人为主键的id。我们这里就假如是查客户的一些信息。比方,你查的是客户,那么你肯定要将客户的名称作边这个表格的第一列,这个时候,表格中tbody的每一行tr的第一个单元格td肯定是存放你的客户名称,这个时候,你就把客户的id作为这一行的唯一标识:

     1       <table>
     2             </thead>
     3                 <th>姓名</th>
     4                 <th class='fl-1'>分类1</th>
     5                 <th class='fl-2'>分类2</th>
     6                 <th class='fl-3'>分类3</th>
     7             </thead>
     8             <tbody>
     9                 <tr data-id='"+customerId+"'>
    10                     <td>张三</td>
    11                     <td class='fl-1'>10</td>
    12                     <td class='fl-2'>20</td>
    13                     <td class='fl-3'>30</td>
    14                 </tr>
    15             </tbody>
    16         </table>

    但是表格填充和普通的元素填充是不一样的。因为表格的话你不能想在哪里填充就在那里填充,一个表格看起来是要完整的。所以你在填充的时候,先将一行先填充起来,再往里面填充数据。假如我们这个是一个4列的动态数据。你就可以这样去填充。

     1  //假如从后台返回的数据结果是一个json格式的 result;
     2     var customerId=result.customerId;
     3     if($("table tbody tr").length==0){//表示你的表格还没填充任何一条数据
     4         $("table tbody").append("<tr data-id='"+customerId+"'><td></td><td></td><td></td></tr>");
     5     }else{
     6         /*假如这个时候你的表格中已有添加过数据了!那这个时候,新的一条数据要怎么办呢?那这个时候要判断这条是一条新数据,还是一条应该往已有行单元格里填充。那你就可以根据customerId判断了*/
     7 
     8         //如果是一条需要你往已有表格里填的数据        
     9         if($("table tbody tr[data-id='"+customerId+"']").length>0){
    10             //这个时候看给你的数据分类了。假如结果是这样的(一般都是用循环解析数据的,我在这里就简写了)
    11             var fl=reslut.list[i].fl;//获取分类
    12             var fl-value=result.list[i].fl-value;//获取分类值
    13             //下面这种写法就会将对应的数据填充到对应的单元格
    14             $("table tbody tr[data-id='"+customerId+"'] td."+fl).text(fl-value);
    15         }else{//表示将添加一条新数据
    16         $("table tbody").append("<tr data-id='"+customerId+"'><td></td><td></td><td></td></tr>");
    17         //继续用填充所要的数据就可以了
    18         }
    19     }

    3.表头不固定,列数据也不固定

    这种情况的话一般比较少见,但是是有的。假如我们的需求是统计公司的所有的员工的签到信息,然后表头的话是根据时间去动态生成的。那这个时候我们要怎么做呢?

    首先,根据时间去查询表头,让后台返回一个表头的数据,我们先填充好表头,然后按钮第2种情况中所说的,给表头加一个class属性,这样的话,后面就和第2种情况差不多了。我就不细说了

    总结,在第2种情况和第三种情况中,我们一般在填充tbody中的数据的时候,首先一定要添加一行后,再去添加数据,我一般用比较笨的方法,是填充一个td有class数据为空的行,这样的话,当我得到数据的时候,我就可以直接准确的定位到我所需要填充数据的单元格中。

    其实这种不固定的表格数据填充,只要你掌握方法了,那么你就会发现,其实不难,如果方法找不到,你在那里墨迹一天也不一定有进展,你的思路一定要清晰。 
    如果还有不懂的童鞋,可以给我留言,。你也可以将你的数据以文本形式发给我,我给你写成一个demo。

  • 相关阅读:
    js/jquery 页面传值
    php 连接sqlserver方法
    php 写webservice常见问题
    php 解决json_encode中文null和UNICODE转码问题
    手机web——自适应网页设计
    50个js技巧(分享)
    php webservice客户端和服务器端
    php 文件下载功能
    es6 字符串的扩展
    vue $emit抛出事件
  • 原文地址:https://www.cnblogs.com/sxs161028/p/7161237.html
Copyright © 2011-2022 走看看