JS合并行

JavaScript017

JS合并行,第1张

JS合并单元格、JavaScript单元格合并

<html>

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

<title>合并表格</title>

<script>

//功能:合并表格

//参数:tb-需要合并的表格ID

//参数:colLength--需要对前几列进行合并,比如,

//想合并前两列,后面的数据列忽略合并,colLength应为2

//缺省表示对全部列合并

//data:2011.11.06

///////////////////////////////////////////////

function uniteTable(tb,colLength){

//检查表格是否规整

if(!checkTable(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

//为每个单元格命名

for(i=0i<rowCounti++){

for(j=0j<colCountj++){

tb.rows[i].cells[j].id="tb__" + i.toString() + "_" + j.toString()

}

}

//逐列检查合并

for(i=0i<colCounti++){

if(i==colLength) return

obj1=document.getElementById("tb__0_"+i.toString())

for(j=1j<rowCountj++){

obj2=document.getElementById("tb__"+j.toString()+"_"+i.toString())

if(obj1.innerText==obj2.innerText){

obj1.rowSpan++

obj2.parentNode.removeChild(obj2)

}else{

obj1=document.getElementById("tb__"+j.toString()+"_"+i.toString())

}

}

}

}

//功能:检查表格是否规整

//参数:tb--需要检查的表格ID

//data: 2011.11.06

function checkTable(tb){

if(tb.rows.length==0) return false

if(tb.rows[0].cells.length==0) return false

for(var i=0i<tb.rows.lengthi++){

if(tb.rows[0].cells.length!=tb.rows[i].cells.length) return false

}

return true

}

</script>

</head>

<body>

<table width="400" border="1" id="table1">

<tr>

<td>a</td>

<td>for</td>

<td>100</td>

<td>200</td>

<td>1</td>

</tr>

<tr>

<td>a</td>

<td>for</td>

<td>100</td>

<td>300</td>

<td>2</td>

</tr>

<tr>

<td>a</td>

<td>if</td>

<td>100</td>

<td>200</td>

<td>3</td>

</tr>

<tr>

<td>a</td>

<td>if</td>

<td>300</td>

<td>230</td>

<td>4</td>

</tr>

<tr>

<td>a</td>

<td>if</td>

<td>320</td>

<td>230</td>

<td>5</td>

</tr>

</table>

<br><input type="button" value="合并表格" onClick="uniteTable(table1,4)">

</body>

</html>

获取值的方式是对的

用个固定的位置示例:

if (tb.rows[0].cells[0].innerHTML == tb.rows[1].cells[0].innerHTML) {

//伪代码

tb.rows[1].deleteCell(0)

tb.rows[0].cells[0].rowspan =2

}

var c = a.concat(b),//合并成一个数组

temp = {},//用于id判断重复

result = []//最后的新数组

//遍历c数组,将每个item.id在temp中是否存在值做判断,如不存在则对应的item赋值给新数组,并将temp中item.id对应的key赋值,下次对相同值做判断时便不会走此分支,达到判断重复值的目的;

c.map((item,index)=>{

if(!temp[item.id]){

result.push(item)

temp[item.id] = true

}

})

console.log(result)