【js】动态合并表格

//动态合并表格
//传入参数:tableObj(表格ID);
//childNodeIndexs:需要合并的列索引可传多列索引用逗号分割如:(‘0,1,2’表示合并表格的一二三列数据,注意传入索引时必须按照

从前往后的顺序)
function setRowSpan(tableObj,childNodeIndexs){
	 try{
  	    var childNodeIndex; //定义需要合并的索引数组
		//如果传进来的索引不为空就已传进来的索引进行合并,否则就按照表格的第一列进行合并
		if(childNodeIndexs!=null){
			childNodeIndex=childNodeIndexs.split(",");
		}else{
			childNodeIndex[0]='0';
		} 
		//得到需要合并的表格对象
		var tableObj = document.getElementById(tableObj); 
		//得到表格的tbody包体对象
		var nodes=tableObj.childNodes[1].childNodes; 
		var objList= new Array() ;
		var c = 1;
		//对包体中表格的列进行循环
		for(var k=0;k<nodes.length;k++){  
			//得到当前行的值
			var curValue=nodes[k].childNodes[parseInt(childNodeIndex[0])].innerHTML; 
			//定义下一行的值
			var nextValue=""; 
			if(nodes[k+1]!=null){
				nextValue=nodes[k+1].childNodes[parseInt(childNodeIndex[0])].innerHTML;
			}   
			//如果当前行的值和下一行值相等则把需要合并行的数目加"1",并把下一行的对象放到集合中
			 if(curValue == nextValue){
			    objList.push(nodes[k+1].childNodes[parseInt(childNodeIndex[0])]);
			  	c++; 
			  }else{ 
			  	//如果当前行的值和下一行的值不行等,则从值相等的那一行的td进行行合并rowSpan=c(c:表示判断值

相等的次数默认为1)
			  	for(var i=0;i<childNodeIndex.length;i++){
					nodes[k-c+1].childNodes[parseInt(childNodeIndex[i])].rowSpan=c; 
				}
				//循环把合并行的单元格移除,直流最后一行
				for(var d=0;d<objList.length;d++){
				   var pNode=objList[d].parentNode; 
				   //定义移除单元格的次数,母的每移除一个单元格,之前的索引要减去"1"
				   var index=0;
				     for(var i=0;i<childNodeIndex.length;i++){
						pNode.removeChild(pNode.childNodes[parseInt(childNodeIndex[i]-index)]); 
						index++;
					}
				}
				//重置变量初始值
				c=1;
				objList=new Array();
			  }
	   } 
	 }catch(e){
        return false;
    }  	
}
<script>
	//页面加载时,调用公共的js用于表格显示合并相同课程教学班
	setRowSpan("row",'0');
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值