合并列的终于做出来了,方法是将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>