js結合セル

3082 ワード

<table   id="mytable"   width="14%"   border="1"   cellspacing="0"   cellpadding="0">         
<tr>               
 <td   width="40%">A</td>             
 <td   width="60%">1</td>         
</tr>         
<tr>               
 <td   width="40%">A</td>             
 <td   width="60%">2</td>         
</tr>         
<tr>               
 <td   width="40%">B</td>             
 <td   width="60%">1</td>         
</tr>         
<tr>               
 <td   width="40%">B</td>             
 <td   width="60%">1</td>         
</tr>         
<tr>               
 <td   width="40%">B</td>             
 <td   width="60%">3</td>        
</tr>
<tr>
 <td   width="40%">A</td>             
 <td   width="60%">1</td>         
</tr>     
</table>     
<input   type="button"   value="merge"   onclick="mergeCell()">         
<script   language="javascript">     
function mergeCell()     
{         
 var rows=mytable.rows;      
 var nrow=0,nlastrow;      
 var ncol=0;//for first column only,but you can use a loop here,if you want         
 while(nrow <rows.length)
 {          
  nlastrow=nrow++;       
  while(nrow<rows.length && rows[nlastrow].cells[ncol].innerText==rows[nrow].cells[ncol].innerText)
  {
   nrow++;    
   if(nrow-nlastrow>1)       
   {        
     for(var i=nlastrow+1;i<nrow;i++)        
         rows[i].deleteCell(ncol);        
   }         
   rows[nlastrow].cells[ncol].rowSpan=nrow-nlastrow;       
  }        
 }     
}  
</script>

 
 
別の関数
 
function SpanGrid(tabObj,colIndex)

{

 if(tabObj != null)

 {

  var i,j;

  var intSpan;

  var strTemp;

  for(i = 0; i < tabObj.rows.length; i++)

  {

   intSpan = 1;

   strTemp = tabObj.rows[i].cells[colIndex].innerText;

   for(j = i + 1; j < tabObj.rows.length; j++)

   {

    if(strTemp == tabObj.rows[j].cells[colIndex].innerText)

    {

     intSpan++;

     tabObj.rows[i].cells[colIndex].rowSpan  = intSpan;

     tabObj.rows[j].cells[colIndex].style.display = "none";

    }

    else

    {

     break;

    }

   }

   i = j - 1;

  }

 }

}