try something like this:<table id="tbl" border="1" cellpadding="0" cellspacing="0">
<tr><td>hello</td><td>world</td>><td>hello</td><td>world</td></tr>
<tr><td>hello</td><td><b>china</b></td><td>hello</td><td>china</td></tr>
</table>
<input type="button" value="merge 2nd row, 1,2,3 cells" onclick="merge(1,0,2)">
<script language="javascript">
function merge(nRow, nColStart, nColEnd)
{
  var rows = tbl.rows;
  if (nRow < 0 || nRow >= rows.length)
return;  var cells = rows[nRow].cells;
  if (nColStart < 0 || nColStart >= cells.length || nColEnd < 0 || nColEnd >= cells.length ||
nColStart > nColEnd)
return;   var s= "";
   for (var i=nColStart; i <=nColEnd; i++)
s += cells[i].innerHTML + " ";   for (var i=nColStart; i <nColEnd; i++)
rows[nRow].deleteCell(nColStart);   rows[nRow].cells[nColStart].colSpan = nColEnd - nColStart + 1;
   rows[nRow].cells[nColStart].innerHTML = s;
}
</script>

解决方案 »

  1.   

    <table border="1" width="100%" id=tab1 onmousedown=tabStart() onmouseup=tabEnd()>
      <tr>
        <td width="25%">111</td>
        <td width="25%">111</td>
        <td width="25%"> </td>
        <td width="25%"> </td>
      </tr>
      <tr>
        <td width="25%">222</td>
        <td width="25%"> </td>
        <td width="25%"> </td>
        <td width="25%"> </td>
      </tr>
      <tr>
        <td width="25%"> </td>
        <td width="25%"> </td>
        <td width="25%"> </td>
        <td width="25%"> </td>
      </tr>
    </table>
    <p>从第<input type="text" name="col1" size="4">列到第<input type="text" name="col2" size="4">列&nbsp;&nbsp;&nbsp;   
    从第<input type="text" name="row1" size="4">行到第<input type="text" name="row2" size="4">行<input type="button" value="合并" onclick=doTab()></p>  
    <script>  
    function doTab(){  
    x1=col1.value-1;  
    x2=col2.value-1;  
    y1=row1.value-1;  
    y2=row2.value-1;  
    if (x1==x2 && y1==y2) return;  
    htmlstr="";  
    xspan=0;
    yspan=0;
    for (i=x1;i<=x2;i++) xspan+=tab1.rows[y1].cells[i].colSpan;
    for (i=y1;i<=y2;i++) yspan+=tab1.rows[i].cells[x1].rowSpan;

    for (i=y1;i<=y2;i++) { 
    htmlstr+="<br>"; 
     
    for(j=x1;j<=x2;j++){  
    htmlstr+=tab1.rows[i].cells[j].innerHTML;  

    }

    htmlstr=htmlstr.substr(4); 
    for (i=y1;i<=y2;i++){ 
    j=x1; 
    while (j<x2){ 
        tab1.rows[i].deleteCell(x1); 
        j++; 

        tab1.rows[i].cells[x1].colSpan=xspan;
    }
    for (i=y2;i>y1;i--){
    tab1.rows[i].deleteCell(x1);
    }
    tab1.rows[y1].cells[x1].rowSpan=yspan;
    tab1.rows[y1].cells[x1].innerHTML=htmlstr; 
    //alert(htmlstr);  
    }  
    function tabStart(){  
        obj=window.event.srcElement;  
        col1.value=obj.cellIndex+1;  
        col2.value=col1.value;  
        row1.value=obj.parentElement.rowIndex+1;  
        row2.value=row1.value;  
    }  
    function tabEnd(){  
        obj=window.event.srcElement;  
        col2.value=obj.cellIndex+1;  
        row2.value=obj.parentElement.rowIndex+1;  
    }  
    </script>  
      

  2.   

    找到相应的单元格,设置colspan或者rowspan属性,然后删去多余的单元格