ie8html导出excel拒绝访问,前端表格导出-layui复杂表头导出支持ie8+

这段代码主要实现了表格行的合并功能,根据指定的字段名和索引,处理固定列和滚动列的行合并。它遍历表格单元格,查找相同数据的单元格并进行合并,同时处理单元格内div的高度适应。此外,还提供了创建导出DOM的功能,用于获取合并后的表格头部和主体数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var execRowspan = function(fieldName,index,flag){

// 1为不冻结的情况,左侧列为冻结的情况

var fixedNode;

fixedNode = index=="1"?$(".layui-table-body")[index - 1]:(index=="3"?$(".layui-table-fixed-r"):$(".layui-table-fixed-l"));

// 左侧导航栏不冻结的情况

var child = $(fixedNode).find("td");

var childFilterArr = [];

// 获取data-field属性为fieldName的td

for(var  i = 0; i 

if(child[i].getAttribute("data-field") == fieldName){

childFilterArr.push(child[i]);

}

}

// 获取td的个数和种类

var  childFilterTextObj = {};

for(var i = 0; i 

//var childText = flag?childFilterArr[i].innerHTML:childFilterArr[i].textContent;

var childText = childFilterArr[i].innerText;

//console.log(childText);

if(childFilterTextObj[childText] == undefined){

childFilterTextObj[childText] = 1;

}else{

var  num = childFilterTextObj[childText];

childFilterTextObj[childText] = num*1 + 1;

}

}

var canRowspan = true;

var maxNum;//以前列单元格为基础获取的最大合并数

var finalNextIndex;//获取其下第一个不合并单元格的index

var finalNextKey;//获取其下第一个不合并单元格的值

for(var i = 0; i 

(maxNum>9000||!maxNum)&&(maxNum = $(childFilterArr[i]).prev().attr("rowspan")&&fieldName!="8"?$(childFilterArr[i]).prev().attr("rowspan"):9999);

//var  key = flag?childFilterArr[i].innerHTML:childFilterArr[i].textContent;//获取下一个单元格的值

var key = childFilterArr[i].innerText;//获取下一个单元格的值

var nextIndex = i+1;

var tdNum = childFilterTextObj[key];

var curNum = maxNum

if(canRowspan){

for(var j =1;j<=curNum&&(i+j

//finalNextKey = flag?childFilterArr[i+j].innerHTML:childFilterArr[i+j].textContent;

finalNextKey = childFilterArr[i+j].innerText;

finalNextIndex = i+j;

if((key!=finalNextKey&&curNum>1)||maxNum == j){

canRowspan = true;

curNum = j;

break;

}

j++;

if((i+j)==childFilterArr.length){

finalNextKey=undefined;

finalNextIndex=i+j;

break;

}

}

childFilterArr[i].setAttribute("rowspan",curNum);

if($(childFilterArr[i]).find("div.rowspan").length>0){//设置td内的div.rowspan高度适应合并后的高度

$(childFilterArr[i]).find("div.rowspan").parent("div.layui-table-cell").addClass("rowspanParent");

$(childFilterArr[i]).find("div.layui-table-cell")[0].style.height= curNum*38-10 +"px";

}

canRowspan = false;

}else{

childFilterArr[i].style.display = "none";

}

if(--childFilterTextObj[key]==0|--maxNum==0|--curNum==0|(finalNextKey!=undefined&&nextIndex==finalNextIndex)){//||(finalNextKey!=undefined&&key!=finalNextKey)

canRowspan = true;

}

}

}

//合并数据表格行

var layuiRowspan = function(fieldNameTmp,index,flag){

var fieldName = [];

if(typeof fieldNameTmp == "string"){

fieldName.push(fieldNameTmp);

}else{

fieldName = fieldName.concat(fieldNameTmp);

}

for(var i = 0;i

execRowspan(fieldName[i],index,flag);

}

}

function createExportDomFun(id){

var header_tr = $('#'+id+'').next().find(".layui-table-header").find("tr");

var body_tr = $('#'+id+'').next().find(".layui-table-body").find("tr");

var header_html = "";

var body_html = "";

// 获取表头html,包括单元格的合并

$.each(header_tr,function (i,tr) {

var header_th = $(tr).find("th");

header_html += "

";

$.each(header_th,function (j,th) {

var rowspan_num = $(th).attr("rowspan");// 行合并数

var colspan_num = $(th).attr("colspan");// 列合并数

if (rowspan_num && !colspan_num){// 只有行合并时

header_html += '

';

} else if (colspan_num && !rowspan_num){// 只有列合并时

header_html += '

';

} else if (rowspan_num && colspan_num){// 行列合并均有时

header_html += '

';

} else {// 没有发生单元格合并

header_html += '

';

}

header_html += $(th).children().children().text() + '

';// 获取表头名称并拼接th标签

})

header_html += '

';

})

// 获取表格body数据

$.each(body_tr,function (i,tr) {

var  body_td = $(tr).find("td");

body_html += '

';

$.each(body_td,function (j,td) {

body_html += '

' + $(td).children().text() + '';

})

body_html += '

';

})

$('#'+id+' tr').remove();// 清除之前的doom结构

$('#'+id+'').append(header_html).append(body_html);

$('#'+id+'').hide();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值