layui數據表格固定頭部和第一列、colspan合並列


剛看到原型圖的時候,納尼?不是跟我開玩笑吧,小女子資歷尚淺,還真沒做過像這樣的功能,然后就是各種找度娘,可是都沒有找到合適的,很多都是行合並,真的是頭疼呀!再糾結是用VUE實現還是用layui實現好,在最后掙扎下,還是選擇了用layui。最后加上從各大神的demo中得到的靈感。在這里記錄一下,希望可以幫助到有需要的人啦~

移動端展示效果如下:

 

 

 

 1 <script>
 2 
 3 layui.use('table', function(){
 4 var table = layui.table;
 5 //第一個實例
 6 table.render({
 7 elem: '#demo'
 8 ,height:document.body.offsetHeight
 9 ,url: './workStatu.json' //數據接口
10 ,cols: [[ //表頭
11 {field: 'name', title: '第13周', width:100,fixed: 'left',align:'center'}
12 ,{field: 'vlcc', title: '周一(3月25日)', width:115,align:'center'}
13 ,{field: 'suezmax', title: '周一(3月25日)', width:115,align:'center'}
14 ,{field: 'aframax', title: '周一(3月25日)', width:115,align:'center'} 
15 ,{field: 'panamax', title: '周一(3月25日)', width:119,align:'center'}
16 ,{field: 'crudeoilmr', title: '周一(3月25日)', width:115,align:'center'}
17 ]]
18 ,done:function(res,curr,count){
19 colSpan()
20 }    
21 }); 
22 });
23 
24 
25 
26 function colSpan(){
27 var tab = document.querySelector("div .layui-table-main .layui-table");//獲取目標tabel
28 var maxRow = 6, val, count, start;
29 count = 1;
30 val = "";
31 for(var i = 0;i<tab.rows.length;i++){ //遍歷所有行
32 for(var col = maxRow - 1; col >= 1; col--){ //遍歷每一行的每一個td
33 if(val == tab.rows[i].cells[col].innerText){ //判斷前一個td和后一個td是否相同
34 if(tab.rows[i].cells[col].innerText.length>=4){ //判斷td的值的長度是否大於4,因為這里的需求是長度大於4有相同的才合並
35 count++;
36 tab.rows[i].cells[col].colSpan = count;
37 for(var j = 1;j<count;j++){
38 tab.rows[i].cells[j+col].style.display = "none";//相鄰的有相同的值,第一個設置colspan,后面的隱藏
39 }
40 } 
41 }else{
42 if(count>1){
43 count = 1;
44 }
45 val = tab.rows[i].cells[col].innerText;
46 }    
47 }    
48 } 
49 }
50 
51 </script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM