如何用Javascript合并单元格 表格挺复杂的,我想把第七列中相邻行的内容相同的单元格合并一下。在网上找了段代码,自己改了半天,老是把我原先的表格结构给弄混乱了。求个合并的方法。虽然不好意思,但是还是要说,这个我想要段能用的代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <td colspan="合并的列数"></td><td rowspan="合并的行数"></td> <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(3, 2, 2);//参数1合并第3列,参数2从2行开始合并,参数3合并2行(跨行) }); }); function merge(cols, startRowIndex, num) { var result = 0; var tr = $("#tab tr:gt(" + startRowIndex + ")"); 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", num || tr.size()); } }); } </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> <html><head><script type="text/javascript">function funfun(row,cell,num){ alert("111"); var mytable=document.getElementById('tb'); for(var i= (row+1),j=0;j<(num-1);j++){ mytable.rows[i].removeChild(mytable.rows[i].cells[cell]); } mytable.rows[row].cells[cell].setAttribute("rowspan",num); }</script></head><body><table id="tb"><tr><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td></tr><tr><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td></tr><tr><td>31</td><td>32</td><td>33</td><td>34</td><td>35</td></tr><tr><td>41</td><td>42</td><td>43</td><td>44</td><td>45</td></tr><tr><td>51</td><td>52</td><td>53</td><td>54</td><td>55</td></tr></table><input type="button" id="btn" value="button" onclick="javascript:funfun(2,2,2);"></body></html>详情:http://hi.baidu.com/xwx520/blog/item/a09b58460009910f6b63e50a.html 看需求,也就是入参是表格id和合并列哇,只有两个参数。不知下面例子满足需求不?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> </head> <body><table width="500" border="1" cellspacing="0" cellpadding="0" id="tbl"> <tr> <td> </td> <td> </td> <td>1</td> <td>2</td> </tr> <tr> <td> </td> <td> </td> <td>2</td> <td>2</td> </tr> <tr> <td> </td> <td> </td> <td>3</td> <td>4</td> </tr> <tr> <td> </td> <td> </td> <td>4</td> <td>4</td> </tr> <tr> <td> </td> <td> </td> <td>5</td> <td>6</td> </tr></table> </body> <script type="text/javascript"> function combineTd(id, colNo) { var tbl = document.getElementById(id); var vList = []; var rows = tbl.rows; for(var i=0; i<rows.length; i++) { vList.push(rows[i].cells[colNo-1].innerHTML); } for(var i=0; i<vList.length-1; i++) { var cn = 1; for(var j=i+1; j<vList.length; j++) { if(vList[i] == vList[j]){ rows[j].removeChild(rows[j].cells[colNo-1]); cn++; } else { if(cn != 1) { rows[i].cells[colNo-1].setAttribute("rowspan", cn); } i = j; cn = 1; } } } } window.onload = function() { combineTd("tbl", 4); } </script></html>楼主用jQuery的话,可以用jQuery精简下。 <table width="600" border="1"> <tr> <td>序号</td> <td>列1</td> <td>列2</td> </tr> <tr> <td rowspan="6">1</td> <td rowspan="6"> </td> <td>1</td> </tr> <tr> <td>1</td> </tr> <tr> <td>1</td> </tr> <tr> <td>2</td> </tr> <tr> <td>3</td> </tr> <tr> <td>3</td> </tr> <tr> <td rowspan="4">3</td> <td rowspan="4"> </td> <td>1</td> </tr> <tr> <td>2</td> </tr> <tr> <td>3</td> </tr> <tr> <td>3</td> </tr> <tr> <td rowspan="9"> </td> <td rowspan="6"> </td> <td>1</td> </tr> <tr> <td>2</td> </tr> <tr> <td>2</td> </tr> <tr> <td>2</td> </tr> <tr> <td>2</td> </tr> <tr> <td>3</td> </tr></table>我的表格大约是这个样子的,前几列有合并单元格。楼上给出的貌似都只对规整的表格起作用。我想要的是把列2里面相同内容的合并一下。另外,还有一个就是,序号一对应的最后一行如果和序号2对应的第一行一样的话是不需要合并的。我整这东西整一下午了。 jquery写的啊,公司一直没用jquery呢 js怎么引用另一个js文件 Javascipt学习问题div id的问题 (50分在线等!)【js/css实战】 给表格加滚动条(有图有素材) js写法问题 javascript 操作 cookie问题,高人请进 看看我写的javascript语法哪里出错了?????? 一个奇怪的问题,一个<a href="">包含一个<input>后,我无法用鼠标选择input中的文字 奇怪的问题,只在我的机器上有 这段代码不太清楚是什么意思 变速动画函数增加任意多个属性的小问题 登录QQ后,如何直接进入QQ邮箱? 用JS的onclick怎么实现局部更新数据?
<td rowspan="合并的行数"></td>
<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(3, 2, 2);//参数1合并第3列,参数2从2行开始合并,参数3合并2行(跨行)
});
});
function merge(cols, startRowIndex, num) {
var result = 0;
var tr = $("#tab tr:gt(" + startRowIndex + ")");
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", num || tr.size());
}
});
}
</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>
<html>
<head>
<script type="text/javascript">
function funfun(row,cell,num)
{
alert("111");
var mytable=document.getElementById('tb');
for(var i= (row+1),j=0;j<(num-1);j++){
mytable.rows[i].removeChild(mytable.rows[i].cells[cell]);
}
mytable.rows[row].cells[cell].setAttribute("rowspan",num);
}
</script>
</head>
<body>
<table id="tb">
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
<td>14</td>
<td>15</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
<td>23</td>
<td>24</td>
<td>25</td>
</tr>
<tr>
<td>31</td>
<td>32</td>
<td>33</td>
<td>34</td>
<td>35</td>
</tr>
<tr>
<td>41</td>
<td>42</td>
<td>43</td>
<td>44</td>
<td>45</td>
</tr>
<tr>
<td>51</td>
<td>52</td>
<td>53</td>
<td>54</td>
<td>55</td>
</tr>
</table>
<input type="button" id="btn" value="button" onclick="javascript:funfun(2,2,2);">
</body>
</html>详情:http://hi.baidu.com/xwx520/blog/item/a09b58460009910f6b63e50a.html
<html>
<head>
</head>
<body>
<table width="500" border="1" cellspacing="0" cellpadding="0" id="tbl">
<tr>
<td> </td>
<td> </td>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>4</td>
<td>4</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>5</td>
<td>6</td>
</tr>
</table>
</body>
<script type="text/javascript">
function combineTd(id, colNo) {
var tbl = document.getElementById(id);
var vList = [];
var rows = tbl.rows;
for(var i=0; i<rows.length; i++) {
vList.push(rows[i].cells[colNo-1].innerHTML);
}
for(var i=0; i<vList.length-1; i++) {
var cn = 1;
for(var j=i+1; j<vList.length; j++) {
if(vList[i] == vList[j]){
rows[j].removeChild(rows[j].cells[colNo-1]);
cn++;
}
else {
if(cn != 1) {
rows[i].cells[colNo-1].setAttribute("rowspan", cn);
}
i = j;
cn = 1;
}
}
}
}
window.onload = function() {
combineTd("tbl", 4);
}
</script>
</html>
楼主用jQuery的话,可以用jQuery精简下。
<tr>
<td>序号</td>
<td>列1</td>
<td>列2</td>
</tr>
<tr>
<td rowspan="6">1</td>
<td rowspan="6"> </td>
<td>1</td>
</tr>
<tr>
<td>1</td>
</tr>
<tr>
<td>1</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>3</td>
</tr>
<tr>
<td>3</td>
</tr>
<tr>
<td rowspan="4">3</td>
<td rowspan="4"> </td>
<td>1</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>3</td>
</tr>
<tr>
<td>3</td>
</tr>
<tr>
<td rowspan="9"> </td>
<td rowspan="6"> </td>
<td>1</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>3</td>
</tr>
</table>
我的表格大约是这个样子的,前几列有合并单元格。楼上给出的貌似都只对规整的表格起作用。
我想要的是把列2里面相同内容的合并一下。另外,还有一个就是,序号一对应的最后一行如果和序号2对应的第一行一样的话是不需要合并的。我整这东西整一下午了。