table中合并单元格的最大限制
程序员文章站
2022-07-14 17:56:15
...
table中合并单元格的最大限制
问题的产生
在项目的开发过程中需要实现节点树,我利用了orgchart插件,但是在测试中发现,当超过1000个节点后节点树错位了。本来以为是插件的计算问题,细究发现是浏览器处理table合并单元格的最大限制问题。下方是简单的示例。
colspan横向合并单元格最大限制
本地测试colspan的最大限制,编写简易的table结构代码,设置两行单元格,第一行合并所有的单元格,第二行利用定时器不停插入单元格,当合并的单元格宽度不等于table的宽度时输出当前一行有多少单元格。
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<td colspan="1" class="js_kkk">合并的单元格</td>
</tr>
<tr class="js_domWrite">
<td>单个</td>
</tr>
</table>
<p>表格总宽度:<span class="js_all"></span></p>
<p>合并的单元格宽度:<span class="js_dom"></span></p>
<p>合并的单元格数目:<span class="js_domnum"></span></p>
<script>
$(function() {
var gg=null;//设置定时器
gg=setInterval(function(){
if($('table')[0].scrollWidth==$('.js_kkk')[0].offsetWidth){//合并单元格宽度与table宽度相等
$('.js_domWrite').append('<td>单个</td>');//再次插入一个单元格
$('.js_kkk').attr('colspan',$('.js_domWrite td').length);//设置colspan的合并数目
}else{//合并单元格宽度与table宽度不相等
$('.js_all').html($('table')[0].scrollWidth);//显示当前table的宽度
$('.js_dom').html($('.js_kkk')[0].offsetWidth);//显示当前合并单元格的宽度
$('.js_domnum').html($('.js_domWrite td').length);//显示当前一行中单元格的数目
clearInterval(gg);//清除定时器
}
},1)
})
</script>
结果显示当单元格数目为1001时,出现问题:
rowspan纵向合并单元格最大限制
本地测试rowspan的最大限制,编写简易的table结构代码,设置一行两列单元格,第一列合并所有的单元格,利用定时器不停在表格中插入一行一列单元格,当合并的单元格高度不等于table的高度时输出当前多少行。
<p>表格总高度:<span class="js_all"></span></p>
<p>合并的单元格高度:<span class="js_dom"></span></p>
<p>合并的单元格数目:<span class="js_domnum"></span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody class="js_domWrite">
<tr>
<td rowspan="1" class="js_kkk">合并的单元格</td>
<td>一个</td>
</tr>
</tbody>
</table>
<script>
$(function() {
var gg=null;//设置定时器
gg=setInterval(function(){
if($('table')[0].scrollHeight!=$('.js_kkk')[0].offsetHeight){//合并单元格高度与table高度不相等
$('.js_all').html($('table')[0].scrollHeight);//显示当前table的高度
$('.js_dom').html($('.js_kkk')[0].offsetHeight);//显示当前合并单元格的高度
$('.js_domnum').html($('.js_domWrite tr').length);//显示多少行
clearInterval(gg);//清除定时器
}else{//合并单元格高度与table高度相等
$('.js_domWrite').append('<tr><td>一个</td></tr>');//再次插入一行一列
$('.js_kkk').attr('rowspan',$('.js_domWrite tr').length);//更新rowspan的合并数目
}
},1)
})
</script>
结果显示当表格行数为65535时,出现问题: