原生js 实现table表格

首先: 定义一个表头(改表头的作用是,固定表头的展示,不至于tabody数据过多时,页面滚动导致表格头部滚动)

                <table id="dev-title" class="table  table-hover" style="margin-bottom: 0; table-layout:fixed;">
                    <colgroup>
                        <col style="width:10%"/>
                        <col style="width:10%"/>
                        <col style="width:10%"/>
                        <col style="width:10%"/>
                        <col style="width:13%"/>

                    </colgroup>
                    <thead>
                    <tr class="title">
                        <th>所在小区</th>
                        <th>台变</th>
                        <th>异动类型</th>
                        <th>表箱名</th>
                        <th>时间</th>
                    </tr>
                    </thead>
                </table>

其次定义表格的body部分:

                <div class="table-scrollable table-scrollable-my ">
                    <table class="table  table-hover dev-tab" style="table-layout:fixed;">
                        <colgroup>
                            <col style="width:10%;"/>
                            <col style="width:10%"/>
                            <col style="width:10%"/>
                            <col style="width:10%"/>
                            <col style="width:13%"/>
                        </colgroup>
                        <tbody>
                        </tbody>
                    </table>
                </div>

            </div>

需要注意的是,两个colgroup的col定义的宽度要一致,这样才可以实现表格的宽度自适应。

其次,给表格body赋值:

    function drawFormList_bd(data){  // 定义一个渲染表格数据的方法
        console.log(data,'6666666666')
        var $listItem = $('<tr>\
                         <td class="xiaoQu"></td>\
                        <td class="taiBian"></td>\
						<td class="type"></td>\
						<td class="meterBoxName"></td>\
						<td class="repairTime"></td>\
					</tr>');
        var $from = $(".dev-tab tbody").empty(); // 每次进入该方法,先让表格的tbody为空
        if(data.records && data.records.length>0){
            $(data.records).each(function(i){ // 循环给表格赋值
                var self = this;
                var $tmp = $listItem.clone();
                $tmp.find('.taiBian').html(this.substationName);
                $tmp.find('.xiaoQu').html(this.courtName)
                $tmp.find('.meterBoxName').html(this.meterBoxName);
                if(this.diffType == '2'){
                    $tmp.find('.type').html("增加");
                }else{
                    $tmp.find('.type').html("减少");
                }
                $tmp.find('.repairTime').html(this.createTime ? moment(this.createTime).format("YYYY-MM-DD HH:mm:ss") : "-");
                $from.append($tmp); // 将定义的html结构添加到刚刚表格的tbody下面
            });
        }else{
            $from.append('<tr><td class="text-center danger" colspan="10">抱歉,没有找到数据</td></tr>');
        }
    }

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 HTML 表格宽度拖拽,可以使用原生 JavaScript实现。以下是一个简单的实现方式: HTML 代码: ``` <table id="myTable"> <tr> <th>列1</th> <th>列2</th> <th>列3</th> </tr> <tr> <td>内容1</td> <td>内容2</td> <td>内容3</td> </tr> <tr> <td>内容4</td> <td>内容5</td> <td>内容6</td> </tr> </table> ``` JavaScript 代码: ``` var table = document.getElementById("myTable"); var isResizing = false; var lastDownX = 0; // 设置每列的初始宽度 var columnWidths = [100, 100, 100]; for (var i = 0; i < table.rows[0].cells.length; i++) { table.rows[0].cells[i].style.width = columnWidths[i] + "px"; } // 鼠标按下时记录位置 table.addEventListener("mousedown", function (e) { isResizing = true; lastDownX = e.clientX; }); // 鼠标移动时改变列宽度 table.addEventListener("mousemove", function (e) { if (!isResizing) { return; } var cell = e.target.parentElement; var cellIndex = Array.from(cell.parentElement.children).indexOf(cell); var widthDiff = e.clientX - lastDownX; // 改变当前列的宽度 var newWidth = columnWidths[cellIndex] + widthDiff; if (newWidth > 0) { cell.style.width = newWidth + "px"; columnWidths[cellIndex] = newWidth; lastDownX = e.clientX; } }); // 鼠标抬起时停止改变列宽度 table.addEventListener("mouseup", function (e) { isResizing = false; }); ``` 以上代码会在表格中添加一个鼠标事件监听器,当用户按下鼠标并移动时,会根据鼠标的位置改变被选中列的宽度。需要注意的是,当用户拖动列宽度时,应该记录每列的初始宽度(在这里使用了 `columnWidths` 数组来记录),并在移动过程中修改当前列的宽度,而不是仅仅修改当前列的宽度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值