window.onload = function(){
var tab = document.getElementById("datatable");
var name,rid
name ="",rid=0;
count = 1;
for(var i=1; i<tab.rows.length; i++){
if(name == tab.rows[i].cells[1].innerHTML ){
count++;
}else{
if(count > 1){ //合并
start = i - count;
tab.rows[start].cells[1].rowSpan = count;
tab.rows[start].cells[0].rowSpan = count;
for(var j=start+1; j<i; j++){
for(var k=0; k<2; k++){
tab.rows[j].removeChild(tab.rows[j].cells[0]);
}
}
count = 1; tab.rows[i].cells[0].innerHTML=rid;
rid=parseInt(rid)+1;
}/*else if(count == 1){
tab.rows[i].cells[0].innerHTML=rid;
rid=parseInt(rid)+1;
}*/
name = tab.rows[i].cells[1].innerHTML;
}
}
};
这是合并单元格的函数,我希望合并完后,在第一列显示序号1,2,3,4,5,依次
我在第一列的TD里加了1个ID的属性,rid1,rid2,rid3,rid3..依次
我现在发现如果我循环遍历我合并完了的TABLE的时候,
被合并,并且被上面的函数removeChild掉了的TD的ID也会也被抓取到,
var tab = document.getElementById("datatable");
var name,rid
name ="",rid=0;
count = 1;
for(var i=1; i<tab.rows.length; i++){
if(name == tab.rows[i].cells[1].innerHTML ){
count++;
}else{
if(count > 1){ //合并
start = i - count;
tab.rows[start].cells[1].rowSpan = count;
tab.rows[start].cells[0].rowSpan = count;
for(var j=start+1; j<i; j++){
for(var k=0; k<2; k++){
tab.rows[j].removeChild(tab.rows[j].cells[0]);
}
}
count = 1; tab.rows[i].cells[0].innerHTML=rid;
rid=parseInt(rid)+1;
}/*else if(count == 1){
tab.rows[i].cells[0].innerHTML=rid;
rid=parseInt(rid)+1;
}*/
name = tab.rows[i].cells[1].innerHTML;
}
}
};
这是合并单元格的函数,我希望合并完后,在第一列显示序号1,2,3,4,5,依次
我在第一列的TD里加了1个ID的属性,rid1,rid2,rid3,rid3..依次
我现在发现如果我循环遍历我合并完了的TABLE的时候,
被合并,并且被上面的函数removeChild掉了的TD的ID也会也被抓取到,
合并后需要重置一下id吧
在removeChild之前,先把单元格的ID置为deled,难道重名不犯罪。之后遍历碰到deled就知道了。
用jquery 比较简单<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>取值并合并</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function () {
$("input").click(function () {
merge(1);//合并第3列
});
});
function merge(cols) {
var result = 0;
var tr = $("#tab tr");
tr.each(function (i) {//tab是table id
var td = $(this).find("td:eq(" + (cols - 1) + ")");
result += eval(td.text()) || 0;
if (i != 0) {
td.remove();
} else {
td.attr("rowspan", tr.size());
}
}).end().find("td:eq(" + (cols - 1) + ")").text(result);
}
</script>
</head><body>
<input type="button" value="合并取值" />
<table width="500" border="1" cellspacing="0" cellpadding="0" id="tab">
<tr>
<td> </td>
<td> </td>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>5</td>
<td>6</td>
</tr>
</table>
</body>
</html>