我自己写了一款JavaScript表格插件,美滋滋~~

简介: 导航使用效果文档说明源码

使用效果

4.png

文档说明

第一步、从tableFactory获图标Form对象。

5.png

或者:

6.png

第二步、加载参数,传入json对象

7.png

表格效果:

8.pngjson参数明细:

9.png


实例:

10.png11.png

对应于:

12.png

第三步、将table加载到页面中对应ID的div中。

如:

13.png

根据列数可以动态调整TD的宽度

14.png

单独放入一个文件,可以直接调用。

15.png


源码

//表格工厂
var tableFactory = function(type){
  if(this instanceof tableFactory){
    return new this[type]();
  }else{
    return new tableFactory(type); //防止没有写new的情况
  }
}
tableFactory.prototype = {
  chartForm : function(){
    var html = ''; //私有属性
    this.loadParams = function(opts){
      var jsonArr = []; //JSON数组
      var icount = 0;//用于控制行变色
      var rowHeaderArr = [];//每行第一列格式数组
      if(opts.jsonArr){
        jsonArr = opts.jsonArr;
      }
      if(opts.rowHeaderArr){
        rowHeaderArr = opts.rowHeaderArr;
      }
      var colNum = jsonArr.length; //记录总列数
      var rowNum = rowHeaderArr.length - 1;//总行数(除去首行)
      html = "<TABLE id='table' style=\"border-collapse:collapse;border-spacing:0;border:1px solid #ccc;font-size:12px;text-align:center;\"   >"+
                "<TBODY><TR> "+
                  "<TD  >&nbsp;</TD>"; //左上角空的TD
      //拼写第一行 
      for(var i = 0;i < colNum;i++){
        var c1 = jsonArr[i].c1;
        html += '<TD  style="border:1px solid #ccc;height:14px;background-color:#e2fdfe;font-size:14px;font-weight:bold;padding:3px;" >' + c1 + '</TD>';
      }
      html += '</TR><TR>';
      for(var i = 0;i < rowNum + 1;i++){
        //拼写行头
        var colorBox = rowHeaderArr[i].split(',')[0];
        var hearderText = rowHeaderArr[i].split(',')[1];
        html += "<TD class='colorBox' style='padding:3px;height:14px;border:1px solid #ccc;width:66px;text-align:center;'><div style='border-radius:2px 2px 2px 2px;display:inline-block;width:12px;height:12px;background-color:"+colorBox+";float:left;'></div>"+hearderText+"</TD>";
        //拼写这一行右边的所有列
        for(var j = 0;j < colNum;j++){
          //alert(i);
          var colValue = jsonArr[j]['c'+(i+2)];
          var tdWidth;
          if(colNum <= tableFactory.TD_WIDTHS.length)
            tdWidth = tableFactory.TD_WIDTHS[colNum-1];
          else 
            tdWidth = tableFactory.TD_WIDTHS[tableFactory.TD_WIDTHS.length - 1];
          console.info(tdWidth);
          if(i%2 == 0){
            html += '<TD style = "height:14px;border:1px solid #ccc;width:'+ tdWidth +'px;text-align:center;background-color:#e2fdfe;">'+colValue+'</TD>'; 
          }else{
            html += '<TD style = "height:14px;border:1px solid #ccc;width:'+ tdWidth +'px;text-align:center;background-color:#fff;">'+colValue+'</TD>'; 
          }
        }
        //换行
        html += '</tr><tr>';
      }
      html += '</TR><TR>';
      html += '</TR>';
      html += '</TBODY></TABLE>';
    } ;
    this.loadData = function(houseId,callback){
      document.getElementById(houseId).innerHTML = html; //展示table
      if(callback) callback();
    }
  }
}
  tableFactory.TD_WIDTHS = [220,190,150,120,90,60,10];

Demo:

<script src='common.js'></script>
<div id='TB' class='TB'></div>
<div id='TB1' class='TB'></div>
<div id='TB2' class='TB'></div>
<div id='TB3' class='TB'></div>
<div id='TB4' class='TB'></div>
<style>
    .TB {
    padding:6px;
  }
</style>
<script>
  var chartForm = tableFactory('chartForm');
  chartForm.loadParams({
            jsonArr:  [
                    {c1:'北京',c2:2,c3:3,c4:3,c5:1,c6:6},
                    {c1:'上海',c2:2,c3:2,c4:3,c5:1,c6:6},
                    {c1:'河南',c2:2,c3:4,c4:3,c5:1,c6:6},
                    {c1:'河北',c2:2,c3:6,c4:3,c5:1,c6:6},
                    {c1:'东北',c2:2,c3:6,c4:3,c5:1,c6:6},
                    {c1:'四川',c2:2,c3:6,c4:3,c5:1,c6:6},
                    {c1:'重庆',c2:2,c3:6,c4:3,c5:1,c6:6}
                  ],
            rowHeaderArr: [
                      '#000CCC,任务总数',     //行名称
                      '#990033,立项阶段',
                      '#66FF00,检查阶段',
                      '#663399,审理阶段',
                      '#33CCFF,报告阶段'
                    ]
          });
  chartForm.loadData('TB');
  chartForm.loadParams({
            jsonArr : [
                    {c1:'北京',c2:2,c3:3,c4:3,c5:1,c6:6},
                    {c1:'上海',c2:2,c3:2,c4:3,c5:1,c6:6},
                    {c1:'河南',c2:2,c3:4,c4:3,c5:1,c6:6},
                    {c1:'河北',c2:2,c3:6,c4:3,c5:1,c6:6},
                    {c1:'东北',c2:2,c3:6,c4:3,c5:1,c6:6},
                    {c1:'四川',c2:2,c3:6,c4:3,c5:1,c6:6},
                  ],
            rowHeaderArr : [
                      '#000CCC,任务总数',     //行名称
                      '#990033,立项阶段',
                      '#66FF00,检查阶段',
                      '#663399,审理阶段',
                      '#33CCFF,报告阶段'
                    ]
          });
  chartForm.loadData('TB1');
  chartForm.loadParams({
            jsonArr:  [
                    {c1:'北京',c2:2,c3:3,c4:3,c5:1,c6:6},
                    {c1:'上海',c2:2,c3:2,c4:3,c5:1,c6:6},
                    {c1:'河南',c2:2,c3:4,c4:3,c5:1,c6:6},
                    {c1:'河北',c2:2,c3:6,c4:3,c5:1,c6:6},
                    {c1:'东北',c2:2,c3:6,c4:3,c5:1,c6:6},
                  ],
            rowHeaderArr: [
                      '#000CCC,任务总数',     //行名称
                      '#990033,立项阶段',
                      '#66FF00,检查阶段',
                      '#663399,审理阶段',
                      '#33CCFF,报告阶段'
                    ]
          });
  chartForm.loadData('TB2');
</script>


相关文章
|
1月前
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
1月前
|
JavaScript 前端开发
基于SVG的js圆形菜单插件
这是一款基于SVG的js圆形菜单插件。该js圆形菜单插件可以生成漂亮的圆形菜单效果,支持二级菜单,支持使用鼠标滚动切换菜单
58 16
|
1月前
|
JavaScript
时尚简洁的js轮播图特效插件
这是一款时尚简洁的js轮播图特效插件。该轮播图采用es6语法制作,底部带缩略图和描述信息。图片和描述信息在切换时同步滑动。
|
1月前
|
JavaScript 前端开发 异构计算
兼容移动手机的js拖拽插件Draggin.js
兼容移动手机的js拖拽插件Draggin.js
38 1
|
2月前
|
Web App开发 JavaScript iOS开发
JS弹出式QQ在线客服插件
JS弹出式QQ在线客服插件
42 6
|
2月前
|
JavaScript 前端开发 容器
jQuery多功能滑块插件r-slider.js
r-slider.js是一款jQuery多功能滑块插件。使用该插件,可以制作出滑块、开关按钮、进度条、向导步骤等多种效果。
54 5
|
2月前
|
JavaScript 前端开发
javascript开发的简单的弹幕插件
这是一个原生javascript开发的简单的弹幕插件,具有美观、易用,占用的资源较低等特点,可以给弹幕设置内容、颜色、头像、链接地址等属性,鼠标悬停等,简单实用,欢迎下载!
50 5
|
2月前
|
Web App开发 JavaScript 前端开发
高性能的纯Js滚动条美化插件smooth-scrollbar
smooth-scrollbar是一款高性能的纯JavaScript滚动条美化插件。该滚动条为现代浏览器而制作,它具有高性能,自由配置,平滑滚动等特点,支持各种现代桌面浏览器和手机设备。
|
2月前
|
JavaScript 定位技术
jQuery鹰眼视图小地图定位预览插件minimap.js
这是一个jQuery小地图定位预览视图,默认左侧是页面主要内容,minimap.js的好处就是在它的右侧形成一个快速定位通道,产生一个缩小版的页面,即预览效果,可以点击并快速定位到页面的某个位置。简单实用,欢迎下载!
42 0
|
3月前
|
存储 JSON JavaScript
Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解
Vue.js开发中基于localStorage与sessionStorage的本地存储利器:Vue-ls插件使用详解
151 0