Table、GridView合并列js脚本

注意:此种方式不适用于表头有合并的表格或者Gridview

<script>
     function unionTab(tb, colLength)
 {   
   //   检查表格是否规整      
   if (!checkTab(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;   
    var objtemp1=new Array();   
    var objtemp2=new Array();   
       
    //为每个单元格命名,表头不命名   
    for (i = 1; i < rowCount; i++)
    {   
        for (j = 0; j < colCount; j++)
        {   
            tb.rows[i].cells[j].id = "tb_" + i.toString() + "_" + j.toString();   
        }   
    }   
    var k=colLength-1;   
    //从后往前检查,进行逐列检查合并,开始列为colLength-1   
    for (i = k; i >= 0; i--)
    {   
        //当i>0时有前方的单元格   
        if (i > 0)
        {   
            //查找当前单元格前几单元格,l为列值
        	if(objtemp1.length>0)
        	{
        	   objtemp1=new Array();
        	 }
            for(l=0;l<i;l++)   
            {   
                objtemp1[l]=document.getElementById("tb_1_" + l.toString());      
            }   
        }   
        obj1 = document.getElementById("tb_1_" + i.toString());   
        for (j = 2; j < rowCount; j++)
        {   
		   if (i > 0)
		   {   
		      //查找当前单元格前几单元格,l为列值 
		   	  if(objtemp2.length>0)
		   	  {
		   	     objtemp2=new Array();
		   	   }
		      for(l=0;l<i;l++)
		      {   
		         objtemp2[l]=document.getElementById("tb_" + j.toString() + "_" + l.toString());   
		      }   
		   }   
           obj2 = document.getElementById("tb_" + j.toString() + "_"+ i.toString());   
		   if (obj1.innerText == obj2.innerText)
		   { 
			  if (i > 0)
			  {   
				 if (checkArray(objtemp1,objtemp2))
				 {   
				     obj1.rowSpan++; 
				     obj2.parentNode.removeChild(obj2);   
				  } 
				 else 
				 {  
				     obj1 = document.getElementById("tb_" + j.toString() + "_" + i.toString());
				     if(objtemp1.length>0)
				     {
				        objtemp1=new Array();
				      }
				     for(l=0;l<i;l++)
				     {   
				         objtemp1[l]=document.getElementById("tb_" + j.toString() + "_"  + l.toString());   
				     }   
				 }   
			  }
			  else 
			  { 
				  obj1.rowSpan++;
				  obj2.parentNode.removeChild(obj2);   
			  }   
				  
		   }
		   else
		   {   
			  obj1 = document.getElementById("tb_" + j.toString() + "_" + i.toString());
			  if(objtemp1.length>0)
			  {
			    objtemp1=new Array();
			   }
               for(l=0;l<i;l++)
               {
                  objtemp1[l]=document.getElementById("tb_" + j.toString() + "_"  + l.toString());  
               }    
		   }       
        }   
    }   
}   
  
/////////////////////////////////////////      
// 功能:检查表格是否规整   
// 参数:tb--需要检查的表格ID   
// ///////////////////////////////////////   
function checkTab(tb) {   
    if (tb.rows.length == 0)   
        return false;   
    //如果只有一行表头也返回false   
    if(tb.rows.length==1)   
        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;   
}   
  
//检查取出的值是否相等   
function checkArray(arr1,arr2){   
    for(i=0;i<arr1.length;i++){   
        if(arr1[i].innerText==arr2[i].innerText){   
               
        }else{   
            return false;   
        }      
    }   
    return true;   
}  
</script>
调用方式如下:<body onLoad=”unionTab(table1,3)”> 其中table1为表格或GridView的ID
 
实例文件下载地址
原文地址:https://www.cnblogs.com/smthts/p/2823405.html