日期:2014-05-16  浏览次数:20359 次

合并一个表格里面内容相同的单元格 js
<script> 
function MergeCellsVertical(tbl, cellIndex) //相同数据上下合并 
{ 
  if (tbl.rows.length < 2) return; 
  var i, j; 
  var last = tbl.rows(0).cells(cellIndex).innerHTML; 
  var lastIndex = 0;  
  for (i = 1; i < tbl.rows.length; i++) 
  {  
    if (tbl.rows(i).cells(cellIndex).innerHTML != last) // 发现新的值 
    {  
      if (i > lastIndex + 1) 
      { 
        for (j = lastIndex + 1; j < i; j++) 
        { 
          tbl.rows(j).cells(cellIndex).removeNode(); 
        } 
        tbl.rows(lastIndex).cells(cellIndex).rowSpan = i - lastIndex; 
      } 
  //alert(tbl.rows(i).cells(cellIndex).innerHTML); 
      last = tbl.rows(i).cells(cellIndex).innerHTML; 
      lastIndex = i; 
    } 
  } 
  // 最后一行要特别处理 
  if (lastIndex != tbl.rows.length - 1) 
  {  
    for (j = lastIndex + 1; j < tbl.rows.length; j++) 
    {    
      tbl.rows(j).cells(cellIndex).removeNode(); 
    } 
    tbl.rows(lastIndex).cells(cellIndex).rowSpan = tbl.rows.length - lastIndex + 1; 
  } 
} 
</script> 

?然后我在页面写了一个简单的表格:

<table  name="test"> 
        <tr> 
                <td>数据 </td> 
                <td>数据 </td> 
                <td>数据 </td> 
                <td>数据 </td> 
                <td>数据 </td> 
                <td>数据 </td> 
        </tr> 
        <tr> 
                <td>数据 </td> 
                <td>数据 </td> 
                <td>数据 </td> 
                <td>数据 </td> 
                <td>数据 </td> 
                <td>数据 </td> 
        </tr> 
</table> 

?

现在我调用js方法

<script> 
MergeCellsVertical(test,0);//按行进行合并 
</script>

?

页面报javascript 错误 'rows.length' 为空或不是对象? 并且 一直取不到表格的length

?

将table的dom对象传进去

<table? name="test"> ,MergeCellsVertical(test,0);这样是不能将table对象传过去的。最好table id="test";如果用name,需要用document.getElementsByName("test")[0]来获得。

1 楼 chenkeming 2010-12-13  
很好,不过只能支持一列,两列以上就不行了