美文网首页
配置文件html-table展示(二)

配置文件html-table展示(二)

作者: 两点半的杂货铺 | 来源:发表于2018-03-21 20:52 被阅读22次

一、几个常用js指令

  • document.createElement(' ')创建标签
  • td.innerHTML= row[colConfig.q] 标签内的对应文本
  • $(tr).append(td) 子标签加入父类标签,也可以通过id,class等定位
  • $.each(循环的列表,function (k,colConfig) {}each中两个参数分别是,要循环的列表和function,其中function中的k是列表的位置[0][1]....,colConfig是内容

(1.1) 自定义string方法String.prototype,

因为所有的封装了字符串的所有方法都在这个函数,我们可以写一个类似于python中format函数自定义js的string思路
  • (1.1.1)"{m}-{n}"为格式化的字符串
  • (1.1.2)"{'n':"机柜",'m':"xx`"}"替换的格式内容
  • 这里面的this 相当于self值得这个对象,这就是这个字符串,这个例子中的this代指测试经验:{age}-{gender}
    String.prototype.format=function (kwargs) {
        console.log(this);
        //用正则匹配要替换的内容
        var ret = this.replace(/\{(\w+)\}/g,function(km,m){
                //return 会替换完后返回替换后的值,m是正则匹配的占位符
                return kwargs[m];
        });
      //返回替换后的字符
        return ret;
    };
var v = "测试经验:{age}-{gender}"
alert(v.ceshi({"age":'28','gender':'男'}))

二、思路

访问整体框架页面后, 触发ajax请求,触发数据展示

  • html 代码先搭建一个table框架
    <h1>资产列表</h1>
    <table border="1">
        <thead id="table_th">
        </thead>
        <tbody id="table_td">
        </tbody>
    </table>
  • ajax编写,在ajax中分别写两个函数分别是initHeader初始化表头,initBody初始化表格内容信息
 $(function () {
        init();
    })

    function init() {
        $.ajax({
            url:'/asset-json.html',
            type:'GET',
            dataType:'JSON',
            success:function (result) {
                initHeader(result.table_config);
                initBody(result.table_config,result.data_list);
            }
        })
    }
  • 初始化 initHeader初始化表头编写,因为表头信息都保存在配置文件中,所以通过获取配置文件列表,循环并取出里面的title,其中item.display决定是否显示
function initHeader(table_config) {
        var tr = document.createElement('tr')
        /**循环保存的配置文件列表**/
       $.each(table_config,function (k,item) {
        /**决定是否显示**/
           if(item.display) {
               var th = document.createElement('th')
               th.innerHTML = item.title;
               $(tr).append(th)
           }
       })
        $('#table_th').append(tr)
    }
  • 展示table中的数据,其中table中的行是,数据库中查询的数据个数,列是配置文件决定的现实标题数,这里我们传了两个值,分别是数据库查询的数据行,和配置文件列
  • 首先 我们要对字符串的拼接做一份处理好的有数据库值的拼接,这里用了一个新字典来处理,字典中的k是替换的标记,v是替换的内容,其中@符号的v保存的是数据库的字段
                         kwargs = {}
                        $.each(colConfig.text.kwargs,function (k,v) {
                            if (v[0] == "@"){
                                kwargs[k] = row[v.substring(1,v.length)]
                            }else{
                                kwargs[k] = v
                            }
                        })

最后的逻辑

       function initBody(table_config,data_list) {

       /** data_list 是数据库查回的数据,有多少条就有多少行 **/
        $.each(data_list,function (k,row) {
                var tr = document.createElement('tr')
                /** table_config 是标题标题管的是多少列 **/
                $.each(table_config,function (k,colConfig) {
                    if(colConfig.display) {
                        //colConfig.text.content = "{m}-{n}"为格式化的字符串
                        //colConfig.text.kwargs = "{'n':"机柜",'m':"xx`"}"替换的格式内容
                       //自定义string方法
                        //封装了字符串的所有方法
                        kwargs = {}
                        $.each(colConfig.text.kwargs,function (k,v) {

                            if(v.substring(0,2) == "@@"){
                                var globalName = v.substring(2,v.length);
                                var currentId = row[colConfig.q];
                                var t = getTextFromGlobalById(globalName,currentId);
                                kwargs[k] = t
                            }

                            else if (v[0] == "@"){
                                kwargs[k] = row[v.substring(1,v.length)]
                            }else{
                                kwargs[k] = v
                            }
                        })


                        var temp = colConfig.text.content.format(kwargs)


                        var td = document.createElement('td')
                        /** q保存数据库的字段等同于数据库查出的k **/
                        //null 在这修改
                         td.innerHTML = temp
                        //设置属性
                        $.each(colConfig.attrs,function (kk,vv) {
                               td.setAttribute(kk,vv)

                        })
                        $(tr).append(td)
                    }
                })


               $('#table_td').append(tr)

       })
    }


相关文章

  • 配置文件html-table展示(二)

    一、几个常用js指令 document.createElement(' ')创建标签 td.innerHTML= ...

  • circos使用笔记

    circos是用来展示数据的绘图工具,其数据展示方式主要通过配置文件来决定。不同的展示方式可通过不同的配置文件来进...

  • 回到基础:如何用原生 DOM API 生成表格

    翻译:疯狂的技术宅原文:https://www.valentinog.com/blog/html-table/ 怎...

  • 回到基础:如何用原生 DOM API 生成表格

    翻译:疯狂的技术宅原文:https://www.valentinog.com/blog/html-table/ 怎...

  • html-table

    基本定义及创建: 表格是由 定义 表格中的每行由 定义 每行中的每列由 定义例: 上述代码效果如下: 常用表格标签...

  • finalname设置作用

    展示maven pom配置文件中XXXX

  • HTML-Table 标签

    在HTML 中定义了表格布局。说到 table 标签,我们可以想到的大致有以下几个元素: 、 、 、 、 、 接下...

  • Spring Boot基础之多环境配置

    1. 技术目标 目标01:书写多个配置文件,实现不同的开发环境。目标02:书写配置文件中的内容,此处为了展示方便,...

  • vuex实战

    1. 页面获取全局配置文件数据登录页面底部展示放置在全局配置文件的相关数据,如软件版权信息等src/config/...

  • 封装配置文件,信息提示

    原因 项目要存在一个配置文件,配置整个项目的提示信息,当展示信息需要修改的时候,直接在配置文件中进行修改。 若是项...

网友评论

      本文标题:配置文件html-table展示(二)

      本文链接:https://www.haomeiwen.com/subject/coiiqftx.html