试了一下 这个有点麻烦 合并后会把后面的挤出去 挤出去的怎么解决得自己按需要去处理 <html> </head> <script> function test(){ var table=document.getElementById("testTable"); var rows=table.rows; rows[1].cells[1].colSpan=2; rows[1].cells[1].rowSpan=2;
我搞出来了,在3楼的基础上修改了<html> </head> <script language="javascript"> function test(a,b,c,d){ var table=document.getElementById("testTable"); var rows=table.rows; //处理第a行 var cell=rows[a].cells[b]; //保存要合并单元格的值 var strTemp=cell.childNodes[0].nodeValue; for(var j=b;j<d;j++){ var x=cell.nextSibling; while (x.nodeType!=1){ x=x.nextSibling; } strTemp=strTemp+","+x.childNodes[0].nodeValue; cell.parentNode.removeChild(x); }
//处理第a+1到a+c行 for(var i=a+1;i<c+1;i++){ var cell=rows[i].cells[b]; for(var j=b;j<d+1;j++){ //var cell=rows[a].cells[j]; var x=cell.nextSibling; while (x.nodeType!=1){ x=x.nextSibling; } strTemp=strTemp+","+x.childNodes[0].nodeValue; cell.parentNode.removeChild(x); } }
<html> </head> <script language="javascript"> function test(a,b,c,d){ var table=document.getElementById("testTable"); var rows=table.rows; //处理第a行 var cell=rows[a].cells[b]; //保存要合并单元格的值 var strTemp=cell.childNodes[0].nodeValue; //alert(strTemp); for(var j=b;j<d;j++){ var x=cell.nextSibling; while (x.nodeType!=1){ x=x.nextSibling; } strTemp=strTemp+","+x.childNodes[0].nodeValue; cell.parentNode.removeChild(x); }
//处理第a+1到a+c行 for(var i=a+1;i<c+1;i++){ var cell=rows[i].cells[b-1]; for(var j=b;j<d+1;j++){ //var cell=rows[a].cells[j]; var x=cell.nextSibling; while (x.nodeType!=1){ x=x.nextSibling; } strTemp=strTemp+","+x.childNodes[0].nodeValue; alert(strTemp); cell.parentNode.removeChild(x); } }
rowspan=?如果表格已经出来之后再合并,可能很麻烦
<html>
</head>
<script>
function test(){
var table=document.getElementById("testTable");
var rows=table.rows;
rows[1].cells[1].colSpan=2;
rows[1].cells[1].rowSpan=2;
}
</script>
</head><body>
<table id="testTable" border=1>
<tr><td>11</td><td>12</td><td>13</td><td>14</td></tr>
<tr><td>21</td><td>22</td><td>23</td><td>24</td></tr>
<tr><td>31</td><td>32</td><td>33</td><td>34</td></tr>
<tr><td>41</td><td>42</td><td>43</td><td>44</td></tr>
</table>
<button onclick="test()" >test</button>
</body>
</html>
</head>
<script language="javascript">
function test(a,b,c,d){
var table=document.getElementById("testTable");
var rows=table.rows;
//处理第a行
var cell=rows[a].cells[b];
//保存要合并单元格的值
var strTemp=cell.childNodes[0].nodeValue;
for(var j=b;j<d;j++){
var x=cell.nextSibling;
while (x.nodeType!=1){
x=x.nextSibling;
}
strTemp=strTemp+","+x.childNodes[0].nodeValue;
cell.parentNode.removeChild(x);
}
//处理第a+1到a+c行
for(var i=a+1;i<c+1;i++){
var cell=rows[i].cells[b];
for(var j=b;j<d+1;j++){
//var cell=rows[a].cells[j];
var x=cell.nextSibling;
while (x.nodeType!=1){
x=x.nextSibling;
}
strTemp=strTemp+","+x.childNodes[0].nodeValue;
cell.parentNode.removeChild(x);
}
}
rows[a].cells[b].colSpan=2;
rows[a].cells[b].rowSpan=2;
//如果没有下面的,合并后单元格的默认值是22
//重新赋值给合并后的单元格,
//rows[a].cells[b].childNodes[0].nodeValue=strTemp; }
</script>
</head> <body>
<table id="testTable" border=1>
<tr> <td>11 </td> <td>12 </td> <td>13 </td> <td>14 </td> </tr>
<tr> <td>21 </td> <td>22 </td> <td>23 </td> <td>24 </td> </tr>
<tr> <td>31 </td> <td>32 </td> <td>33 </td> <td>34 </td> </tr>
<tr> <td>41 </td> <td>42 </td> <td>43 </td> <td>44 </td> </tr>
</table>
<button onclick="test(1,1,2,2)" >test </button>
</body>
</html>
rows[a].cells[b].colSpan=2;
rows[a].cells[b].rowSpan=2;
应该改为
rows[a].cells[b].colSpan=c;
rows[a].cells[b].rowSpan=d;另外row,cell的下标都是从0开始的
思路:
1.去掉表格的内容:innerHTML
2.隐藏表格的边框:css
</head>
<script language="javascript">
function test(a,b,c,d){
var table=document.getElementById("testTable");
var rows=table.rows;
//处理第a行
var cell=rows[a].cells[b];
//保存要合并单元格的值
var strTemp=cell.childNodes[0].nodeValue;
//alert(strTemp);
for(var j=b;j<d;j++){
var x=cell.nextSibling;
while (x.nodeType!=1){
x=x.nextSibling;
}
strTemp=strTemp+","+x.childNodes[0].nodeValue;
cell.parentNode.removeChild(x);
}
//处理第a+1到a+c行
for(var i=a+1;i<c+1;i++){
var cell=rows[i].cells[b-1];
for(var j=b;j<d+1;j++){
//var cell=rows[a].cells[j];
var x=cell.nextSibling;
while (x.nodeType!=1){
x=x.nextSibling;
}
strTemp=strTemp+","+x.childNodes[0].nodeValue;
alert(strTemp);
cell.parentNode.removeChild(x);
}
}
rows[a].cells[b].colSpan=c;
rows[a].cells[b].rowSpan=d; }
</script>
</head> <body >
<table id="testTable" border=1>
<tr> <td>011 </td> <td>112 </td> <td>113 </td> <td>114 </td> </tr>
<tr> <td>021 </td> <td>212 </td> <td>213 </td> <td>214 </td> </tr>
<tr> <td>031 </td> <td>312 </td> <td>313 </td> <td>314 </td> </tr>
<tr> <td>041 </td> <td>412 </td> <td>413 </td> <td>414 </td> </tr>
</table>
<button onclick="test(1,1,2,2)">test(1,1,2,2)</button>
</body>
</html>
var cell=rows[i].cells[b];
改成
var cell=rows[i].cells[b-1];
将
rows[a].cells[b].colSpan=2;
rows[a].cells[b].rowSpan=2;
应该改为
rows[a].cells[b].colSpan=c;
rows[a].cells[b].rowSpan=d;