• 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
     
    实例文件下载地址
  • 相关阅读:
    Bootstrap3入门
    Pi
    比Redis更快:Berkeley DB面面观
    搞定KMP匹配算法
    elasticsearch文档-analysis
    21本计算机数学相关的免费电子书
    [Android开发常见问题-12] Android开发中debug.keystore如何使用。
    (Java实现) 组合的输出
    (Java实现) 自然数的拆分
    (Java实现) 自然数的拆分
  • 原文地址:https://www.cnblogs.com/smthts/p/2823405.html
Copyright © 2020-2023  润新知