最近遇到一个问题,用javascript合并单元格时,要删除被合并的单元格,试了3中方法:
table.rows[i].cells[0].style.display="none";
table.rows[i].removeChild(table.rows[i].cells[0]);
table.rows[i].deleteCell(0);
这三种方法效率基本差不多,合并100个单元格,需要花7,8秒(测试过时间,主要是上面这行代码占用的时间,基本在6,7秒)
客户说慢,要求改进。上网没搜到有效的办法,不知道各位大虾有没有什么高招,取代这行代码。
table.rows[i].cells[0].style.display="none";
table.rows[i].removeChild(table.rows[i].cells[0]);
table.rows[i].deleteCell(0);
这三种方法效率基本差不多,合并100个单元格,需要花7,8秒(测试过时间,主要是上面这行代码占用的时间,基本在6,7秒)
客户说慢,要求改进。上网没搜到有效的办法,不知道各位大虾有没有什么高招,取代这行代码。
估计还是得看客户端机器的配置情况,高端点的机器,对于这点程度的操作,小CASE,Q6600上速度更快。
还有,楼主是如何解决跨行合并问题的?且兼容IE和FF?
比如,页面已经有了合并单元格,现在又想选中一些格子合并时,如果合并区域拐到了其他合并单元格的部分,怎么去自动扩展合并区域!
能否做到像excel那样的智能扩展合并区域?
我是需要给相同值的单元格合并,就是用循环。判断如果相同,则用removeChild给被合并的单元个删除,
我画面上的项目有个130个左右,就要花7,8秒时间啊。不知道为什么代码如下:我测试了红色部分的时间,8秒钟有7秒左右,是这行代码的时间,
问题是,单元格一个一个删,好像慢啊,不知道有没有一下删除多个单元格的方法,
也不知道和CSS的设置有没有关系
function chanageTable(){
var start = new Date();
var table;
var index=1;
table = document.getElementById("mainTable");
if(table != null){
var tdIndex = 0;
var hiddenValue = document.getElementById(getHiddenId("HIDDEN_Value",0)).value;
table.rows[tdIndex].cells[0].innerHTML=index;
var tempCell;
var rowspan;
var rowSize = 1;
for(var i = 1;i < table.rows.length;i++){
if(hiddenValue == document.getElementById(getHiddenId("HIDDEN_Value",i)).value){
// table.rows[i].cells[0].style.display="none";
table.rows[i].removeChild(table.rows[i].cells[0]);
// table.rows[i].deleteCell(0);
rowSize++;
}else{
if(rowSize>1){
tempCell = table.rows[tdIndex].cells[0];
tempCell.innerHTML=index;
tempCell.rowSpan = rowSize;
tempCell.vAlign="top";
}
rowSize = 1;
index++;
tdIndex = i;
hiddenValue = document.getElementById(getHiddenId("HIDDEN_Value",i)).value;
} if(i == table.rows.length-1){
tempCell = table.rows[tdIndex].cells[0];
tempCell.innerHTML=index;
if(rowSize>1){
tempCell.rowSpan = rowSize;
tempCell.vAlign="top";
}
}
}
}
var end = new Date();
alert(start.getTime()-end.getTime());
}
CSS下面这个设置,就是每个TD都有样式的时候,速度就慢6,7倍,
给下面的设置删除后,速度是1秒左右,加上以后,就是7秒左右TABLE.aa td
{
border: 1px solid #808080;
background-color: #C0FFFF; /*テーブルの中身*/
padding: 1px;
font-size: 12pt;
}
TD
{
border: 1px solid #808080;
background-color: #C0FFFF;
padding: 1px;
font-size: 12pt;
}
这种,直接定义TD的CSS的时候,就不影响速度,但是用class名下的td,就很慢,领导不让改CSS,不知道有没有办法,给td和这个Css的关联去掉
解决了我心中的疑问,小弟做的锁列 就是td上className="lock"效率极其低下,现准备动态把td变成th,table样式上判断th锁住![email protected]