首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

javascript 合并单元格解决思路

2013-12-11 
javascript 合并单元格有这样一个需求html页面,一个table表格每行相邻的列的内容相同就合并单元格javascri

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>

热点排行