$.each(theData,function(index,element){//外层循环
var mxNum=element.lsMingXi.length;//内存循环的数量
var tempRowSpan=" rowspan='"+element.lsMingXi.length+"' ";//合并多少行
strBJMXHtml+="<tr>";
strBJMXHtml+="<td style='text-align:center;' "+tempRowSpan+">"+(index+1)+"</td>";//外层的属性
strBJMXHtml+="<td "+tempRowSpan+">"+element.Name+"</td>";//外层的属性
$.each(element.lsMingXi,function(mxIndex,mx){//明细
if(mxIndex!=0){
strBJMXHtml+="<tr>"
}
strBJMXHtml+="<td>"+mx.name+"</td>";//内层的属性
strBJMXHtml+="<td style='text-align:center;'>"+mx.danWei+"</td>";//内层的属性
if(mxIndex!=0){
strBJMXHtml+="</tr>"
}
if(mxIndex==0){
strBJMXHtml+="<td style='text-align:center;' "+tempRowSpan+">"+element.linkManName+"</td>";//外层的属性
strBJMXHtml+="<td style='text-align:center;'"+tempRowSpan+">"+element.linkManPhone+"</td>";//外层的属性
}
});
strBJMXHtml+="</tr>";
});
$("#tableTest").append(strBJMXHtml);
freemark的原理一样
<table style="width:100%;line-height:40px;border-collapse:collapse;word-break:break-all;margin-top:20px"
border="1" bordercolor='#ccc'>
<tr>
<td style="width:6%;text-align:center">序号</td>
<td style="width:27%;text-align:center">外层的字段</td>
<td style="width:27%;text-align:center">内层的字段</td>
<td style="width:10%;text-align:center">外层的字段</td>
</tr>
<#if lsWaiMian??>
<#list lsWaiMian as waiMian>
<tr>
<#assign rowSpanSize= waiMian.lsLiMian?size>
<td rowspan="${rowSpanSize}" style="text-align:center">${waiMian_index+1}</td>
<td rowspan="${rowSpanSize}" style="text-align:center">${waiMian.name}</td>
<#list gaiLun.lsLiMian as limian>
<#if limian_index!=0 >
<tr>
</#if>
<td>${limian.name}</td>
<#if limian_index!=0 >
</tr>
</#if>
<#if limian_index==0 >
<td rowspan="${rowSpanSize}" style="text-align:center">${waiMian.paiMing}</td>
</#if>
</#list>
</tr>
</#list>
</#if>
</table>