日期:2014-05-16  浏览次数:20334 次

求合并不规则列的js
如题

------解决方案--------------------
合并列的终于做出来了,方法是将table映射为二维数组,对数组进行处理,再映射回table,可能还有bug,lz自己测测吧

<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
<title> 合并表格 </title>
<script>
//合并行
function marage(){
var trObjs=document.getElementsByTagName( "tr ");
var tr_len=trObjs.length;
for(var i=tr_len-1;i> =0;i--){
var tdObjs=trObjs[i].childNodes;
var td_len=tdObjs.length;
var col_size=0;
for(var j=td_len-1;j> =0;j--){
if(j> 0){
var td_value=tdObjs[j].innerText;
var td_row=tdObjs[j].rowSpan;
var next_col_value=tdObjs[j-1].innerText;
var next_td_row=tdObjs[j-1].rowSpan;
if(td_value==next_col_value&&td_row==next_td_row){
tdObjs[j-1].colSpan=tdObjs[j].colSpan+tdObjs[j-1].colSpan;
tdObjs[j].removeNode();

}else{
col_size+=tdObjs[j].colSpan;
}
}
}
}
}
//合并列
function a(){
var trObjs=document.getElementsByTagName( "tr ");
var tr_len=trObjs.length;
var td_len=trObjs[0].childNodes.length;
var x_len=tr_len;
var y_len=0;
for(var i=0;i <td_len;i++){
y_len+=trObjs[0].childNodes[i].colSpan;
}
var A=new Array(x_len);
for(var i=0;i <A.length;i++)
A[i]=new Array(y_len);
var B=new Array(x_len);
for(var i=0;i <B.length;i++)
B[i]=new Array(y_len);
var C=new Array(x_len);
for(var i=0;i <C.length;i++)
C[i]=new Array(y_len);
for(var i=0;i <tr_len;i++){
var tdObjs=trObjs[i].childNodes;
var td_len=tdObjs.length;
var col_index=0;
for(var j=0;j <td_len;j++){
A[i][col_index]=tdObjs[j].innerText;
B[i][col_index]=tdObjs[j].colSpan;
C[i][col_index]=tdObjs[j].rowSpan;
col_index+=tdObjs[j].colSpan;
}
}
for(var j=0;j <y_len;j++){
for(var i=x_len-1;i> 0;){
if(typeof(A[i][j])!= "undefined "){
var row_index=i;
var td_value=A[i][j];
var td_col=B[i][j];
i--;
while(i> =0&&typeof(A[i][j])== "undefined "){
i--;
}
if(i==-1){
continue;
}else{
if(td_value==A[i][j]&&td_col==B[i][j]){
A[row_index][j]= "undefined ";
C[i][j]+=C[row_index][j];
}
}
}
}
}
for(var i=0;i <x_len;i++){
var tdObjs=trObjs[i].childNodes;
var td_len=tdObjs.length;
var col_index=0;
for(var j=0;j <td_len;j++){
if(A[i][col_index]== "undefined "){
tdObjs[j].removeNode();
}else{
tdObjs[j].innerText=A[i][col_index];
tdObjs[j].colSpan=B[i][col_index];
tdObjs[j].rowSpan=C[i][col_index];
}
col_index+=B[i][col_index];
}
}
}
</script>
</head>

<body>
<table width= "400 " border= "1 " id= "table1 ">
<tr>
<td> 年度预算 </td>
<td colspan= "5 "> 分季预算 </td>
</tr>
<tr>