lxw
2020-07-11 9db52f2f2dd3665fe9da1ae5657e0167c3a34d40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//定义一个自动创建表格的函数
//ThArr表格的头数据,TdArr表格的单元格数据
function cTbl(ele,ThArr,TdArr){
    ele.children('table').remove();
    var _table=$('<table></table>');
    var _thead=$('<thead></thead>');
    var _tbody=$('<tbody></tbody>');
    var ThArray=new Array();    //设置th的数组
    var TrArray=new Array();    //设置tr的数组
    var TdArray=new Array();    //设置td的数组
    var TdLength;    //获取单元格个数
    var TrLength; //获取行数
    TdLength=TdArr.length;
    TrLength=Math.ceil(TdLength/ThArr.length);
    // 给每个th设置值
    for(var i=0;i<ThArr.length;i++)
    {
        // var dataStr = cutStrByLen(ThArr[i], 7);
        ThArray[i]=$("<th>"+ThArr[i]+"<div class='drag'></div></th>");
    }
    // 给每个td设置值
    for(var i=0;i<TdLength;i++)
    {
        // var dataStr = cutStrByLen(TdArr[i], 7);
        TdArray[i]=$("<td>"+TdArr[i]+"</td>");
    }
    //设置tr
    for(var i=0;i<TrLength;i++)
    {
        TrArray[i]=$("<tr></tr>");
    }
    //将td以col个赋给tr
    var n=0;
    for(var i=0;i<TrLength;i++)
    {
        for(var k=0;k<ThArr.length;k++)
        {
            TrArray[i].append(TdArray[n]);
            n++;
        }
    }
    //给th赋给thead
    for(var i=0;i<ThArr.length;i++)
    {
        _thead.append(ThArray[i]);
    }
    _table.append(_thead);
    // 将tr赋给table
    for(var i=0;i<TrLength;i++)
    {
        _tbody.append(TrArray[i]);
    }
    _table.append(_tbody);
    //将table添加到指定的容器中
    ele.append(_table);
}
 
// 对长度超出len的字符串进行裁剪
function cutStrByLen(data, len) {
    var _str = '';
    // alert(data.length);
    if(data.length > len)
    {
        _str = data.slice(0, len)+'...';
        return _str;
    }
    return data;
}
// 使用构造函数模式创建表格选项
function TblOpt(tblHd, tblBody, hdData, bodyData) {
    this.eleHd = tblHd;   // 获取表头容器
    this.eleBody = tblBody; // 获取body的容器
    this.hdData = hdData;    // 获取表格头部数据
    this.bodyData = bodyData;    // 获取表格body内的数据
    
    // 创建表格
    this.createTbl = function () {
        cTbl(this.eleHd, this.hdData, this.bodyData);
        cTbl(this.eleBody, this.hdData, this.bodyData);
        
        // 使两个表格的宽度一致
        var bodyWidth = this.eleBody.find('table').eq(0).width();
        this.eleHd.find('table').eq(0).width(bodyWidth);
 
        // 将表格上下对齐
        var scrollX = this.eleBody.scrollLeft();
        this.eleHd.find('table').css('left', -scrollX + 'px');
    };
 
    // 使两个表格同步滚动
    this.scrollSame = function () {
        // 将表格上下对齐
        var scrollX = this.eleBody.scrollLeft();
        this.eleHd.find('table').css('left', -scrollX + 'px');
    };
    
    // 浏览器窗口大小改变表格对齐
    this.tblResize = function () {
        var bodyWidth = this.eleBody.find('table').eq(0).width();
        this.eleHd.find('table').eq(0).width(bodyWidth);
    };
    
    // 更新表格的数据
    this.reflushTbl = function (newHdData, newBodyData) {
        this.hdData = newHdData;
        this.bodyData = newBodyData;
        this.createTbl();    // 调用生成新的表格
    };
    
    // 给表格被点击的位置添加背景色
    this.addBg = function (trIndex) {
        // 移出表格行的背景
        this.eleHd.find('tbody').find('tr').removeClass('tbl-tr-bg');
        this.eleBody.find('tbody').find('tr').removeClass('tbl-tr-bg');
        
        // 给特定行添加背景
        this.eleHd.find('tbody').find('tr').eq(trIndex).addClass('tbl-tr-bg');
        this.eleBody.find('tbody').find('tr').eq(trIndex).addClass('tbl-tr-bg');
    };
    
    // 自动调用生成表格
    this.createTbl();