读书人

javascript 合并单元格解决思路

发布时间: 2013-12-11 16:44:13 作者: rapoo

javascript 合并单元格
有这样一个需求html页面,一个table表格每行相邻的列的内容相同就合并单元格 javascript
[解决办法]
既然你分了多个表格,就不是简单的单元格合并了。
而是做的像合并。
如果a ,b 两个表格相邻,
你可以把a表格的最后一个单元格,的右边框,和b表格的第一个左边框去掉,
然后两个表格之间margin为0 ,如果还没挨在一起,可是把第二的margin-left 设个负数、
最后如果要想这个单元格,的长度和其他一样,那么就a表格的最后一个单元格,b表格的第一个的长度都除以2.
保证两表格的的单元格高度一样,横向位置一样。
[解决办法]
用jquery 写的
标题用th 我合并前两列
<script type="text/javascript">
$(function(){
//合并相同内容的单元格
MergeSameTextRows('#table1');
});
//合并相同列的单元格、
function MergeSameTextRows(id){
var table = $(id);
var totalCols = table.find('tr:eq(0)').find('th:lt(3)').length;//合并前两列,可以修改
var totalRows = table.find('tr').length;
for(var i = totalCols-1;i>=1;i--){
spanNum = 1;
startCell = table.find('tr').eq(totalRows-1).find("td").eq(i);
for(var j =totalRows-1;j>=1;j-- ){
var targetCell = table.find('tr').eq(j-1).find("td").eq(i);
if(startCell.text()!=""&&startCell.text()==targetCell.text()){
spanNum++;
targetCell.attr('rowSpan',spanNum);
startCell.remove();
}else{
spanNum=1;
}
startCell = targetCell;
}
}

}
</script>
[解决办法]
做判断 是否使用 rowspan="2"
[解决办法]

<html>  

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>合并表格</title>

<script>

///////////////////////////////////////////////

//功能:合并表格

//参数:tb-需要合并的表格ID

//参数:colLength--需要对前几列进行合并,比如,

//想合并前两列,后面的数据列忽略合并,colLength应为2

//缺省表示对全部列合并

///////////////////////////////////////////////

function uniteTable(tb,colLength){

//检查表格是否规整

if(!checkTable(tb)) return;

var i=0;

var j=0;

var rowCount=tb.rows.length; //行数

var colCount=tb.rows[0].cells.length; //列数

var obj1=null;

var obj2=null;

//为每个单元格命名

for(i=0;i<rowCount;i++){

for(j=0;j<colCount;j++){

tb.rows[i].cells[j].id="tb__" + i.toString() + "_" + j.toString();

}

}

//逐列检查合并

for(i=0;i<colCount;i++){

if(i==colLength) return;

obj1=document.getElementById("tb__0_"+i.toString())

for(j=1;j<rowCount;j++){

obj2=document.getElementById("tb__"+j.toString()+"_"+i.toString());

if(obj1.innerText==obj2.innerText){

obj1.rowSpan++;

obj2.parentNode.removeChild(obj2);

}else{

obj1=document.getElementById("tb__"+j.toString()+"_"+i.toString());

}

}

}

}



/////////////////////////////////////////



//功能:检查表格是否规整

//参数:tb--需要检查的表格ID

//data: 2011.11.06

/////////////////////////////////////////

function checkTable(tb){

if(tb.rows.length==0) return false;

if(tb.rows[0].cells.length==0) return false;

for(var i=0;i<tb.rows.length;i++){

if(tb.rows[0].cells.length!=tb.rows[i].cells.length) return false;

}

return true;

}

</script>

</head>

<body>

<table width="400" border="1" id="table1">

<tr>

<td>a</td>

<td>for</td>

<td>100</td>

<td>200</td>

<td>1</td>

</tr>

<tr>

<td>a</td>

<td>for</td>

<td>100</td>

<td>300</td>

<td>2</td>

</tr>

<tr>

<td>a</td> www.2cto.com

<td>if</td>

<td>100</td>

<td>200</td>

<td>3</td>

</tr>

<tr>

<td>a</td>

<td>if</td>

<td>300</td>

<td>230</td>

<td>4</td>

</tr>

<tr>

<td>a</td>

<td>if</td>

<td>320</td>

<td>230</td>

<td>5</td>

</tr>

</table>

<br><input type="button" value="合并表格" onClick="uniteTable(table1,4)">

</body>

</html>

读书人网 >Java Web开发

热点推荐