合并列的终于做出来了,方法是将table映射为二维数组,对数组进行处理,再映射回table,可能还有bug,lz自己测测吧<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>合并表格</title>
<script>
//合并行
function marage(){
var trObjs=document.getElementsByTagName("tr");
var tr_len=trObjs.length;
for(var i=tr_len-1;i>=0;i--){
var tdObjs=trObjs[i].childNodes;
var td_len=tdObjs.length;
var col_size=0;
for(var j=td_len-1;j>=0;j--){
if(j>0){
var td_value=tdObjs[j].innerText;
var td_row=tdObjs[j].rowSpan;
var next_col_value=tdObjs[j-1].innerText;
var next_td_row=tdObjs[j-1].rowSpan;
if(td_value==next_col_value&&td_row==next_td_row){
tdObjs[j-1].colSpan=tdObjs[j].colSpan+tdObjs[j-1].colSpan;
tdObjs[j].removeNode(); }else{
col_size+=tdObjs[j].colSpan;
}
}
}
}
}
//合并列
function a(){
var trObjs=document.getElementsByTagName("tr");
var tr_len=trObjs.length;
var td_len=trObjs[0].childNodes.length;
var x_len=tr_len;
var y_len=0;
for(var i=0;i<td_len;i++){
y_len+=trObjs[0].childNodes[i].colSpan;
}
var A=new Array(x_len);
for(var i=0;i<A.length;i++)
A[i]=new Array(y_len);
var B=new Array(x_len);
for(var i=0;i<B.length;i++)
B[i]=new Array(y_len);
var C=new Array(x_len);
for(var i=0;i<C.length;i++)
C[i]=new Array(y_len);
for(var i=0;i<tr_len;i++){
var tdObjs=trObjs[i].childNodes;
var td_len=tdObjs.length;
var col_index=0;
for(var j=0;j<td_len;j++){
A[i][col_index]=tdObjs[j].innerText;
B[i][col_index]=tdObjs[j].colSpan;
C[i][col_index]=tdObjs[j].rowSpan;
col_index+=tdObjs[j].colSpan;
}
}
for(var j=0;j<y_len;j++){
for(var i=x_len-1;i>0;){
if(typeof(A[i][j])!="undefined"){
var row_index=i;
var td_value=A[i][j];
var td_col=B[i][j];
i--;
while(i>=0&&typeof(A[i][j])=="undefined"){
i--;
}
if(i==-1){
continue;
}else{
if(td_value==A[i][j]&&td_col==B[i][j]){
A[row_index][j]="undefined";
C[i][j]+=C[row_index][j];
}
}
}
}
}
for(var i=0;i<x_len;i++){
var tdObjs=trObjs[i].childNodes;
var td_len=tdObjs.length;
var col_index=0;
for(var j=0;j<td_len;j++){
if(A[i][col_index]=="undefined"){
tdObjs[j].removeNode();
}else{
tdObjs[j].innerText=A[i][col_index];
tdObjs[j].colSpan=B[i][col_index];
tdObjs[j].rowSpan=C[i][col_index];
}
col_index+=B[i][col_index];
}
}
}
</script>
</head>
<body>
<table width="400" border="1" id="table1">
<tr>
<td>年度预算</td>
<td colspan="5">分季预算</td>
</tr>
<tr>
<td>年度预算</td>
<td colspan="3">第一季度</td>
<td>第二季度</td>
<td>第三季度</td>
</tr>
<tr>
<td>年度预算</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>第二季度</td>
<td>第三季度</td>
</tr>
</table>
<br>
<input type="button" value="合并表格" onClick="marage()">
<input type="button" value="a" onClick="a()">
</body>
</html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>合并表格</title>
<script>
//合并行
function marage(){
var trObjs=document.getElementsByTagName("tr");
var tr_len=trObjs.length;
for(var i=tr_len-1;i>=0;i--){
var tdObjs=trObjs[i].childNodes;
var td_len=tdObjs.length;
var col_size=0;
for(var j=td_len-1;j>=0;j--){
if(j>0){
var td_value=tdObjs[j].innerText;
var td_row=tdObjs[j].rowSpan;
var next_col_value=tdObjs[j-1].innerText;
var next_td_row=tdObjs[j-1].rowSpan;
if(td_value==next_col_value&&td_row==next_td_row){
tdObjs[j-1].colSpan=tdObjs[j].colSpan+tdObjs[j-1].colSpan;
tdObjs[j].removeNode(); }else{
col_size+=tdObjs[j].colSpan;
}
}
}
}
}
//合并列
function a(){
var trObjs=document.getElementsByTagName("tr");
var tr_len=trObjs.length;
var td_len=trObjs[0].childNodes.length;
var x_len=tr_len;
var y_len=0;
for(var i=0;i<td_len;i++){
y_len+=trObjs[0].childNodes[i].colSpan;
}
var A=new Array(x_len);
for(var i=0;i<A.length;i++)
A[i]=new Array(y_len);
var B=new Array(x_len);
for(var i=0;i<B.length;i++)
B[i]=new Array(y_len);
var C=new Array(x_len);
for(var i=0;i<C.length;i++)
C[i]=new Array(y_len);
for(var i=0;i<tr_len;i++){
var tdObjs=trObjs[i].childNodes;
var td_len=tdObjs.length;
var col_index=0;
for(var j=0;j<td_len;j++){
A[i][col_index]=tdObjs[j].innerText;
B[i][col_index]=tdObjs[j].colSpan;
C[i][col_index]=tdObjs[j].rowSpan;
col_index+=tdObjs[j].colSpan;
}
}
for(var j=0;j<y_len;j++){
for(var i=x_len-1;i>0;){
if(typeof(A[i][j])!="undefined"){
var row_index=i;
var td_value=A[i][j];
var td_col=B[i][j];
i--;
while(i>=0&&typeof(A[i][j])=="undefined"){
i--;
}
if(i==-1){
continue;
}else{
if(td_value==A[i][j]&&td_col==B[i][j]){
A[row_index][j]="undefined";
C[i][j]+=C[row_index][j];
}
}
}
}
}
for(var i=0;i<x_len;i++){
var tdObjs=trObjs[i].childNodes;
var td_len=tdObjs.length;
var col_index=0;
for(var j=0;j<td_len;j++){
if(A[i][col_index]=="undefined"){
tdObjs[j].removeNode();
}else{
tdObjs[j].innerText=A[i][col_index];
tdObjs[j].colSpan=B[i][col_index];
tdObjs[j].rowSpan=C[i][col_index];
}
col_index+=B[i][col_index];
}
}
}
</script>
</head>
<body>
<table width="400" border="1" id="table1">
<tr>
<td>年度预算</td>
<td colspan="5">分季预算</td>
</tr>
<tr>
<td>年度预算</td>
<td colspan="3">第一季度</td>
<td>第二季度</td>
<td>第三季度</td>
</tr>
<tr>
<td>年度预算</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>第二季度</td>
<td>第三季度</td>
</tr>
</table>
<br>
<input type="button" value="合并表格" onClick="marage()">
<input type="button" value="a" onClick="a()">
</body>
</html>
嘿嘿....