jsquery 或者js 根据表格行id 合并单元格

luallen 2011-05-26 01:36:35
从网上下了几个,都是合并相同几行的,有没有根据行第一个单元格id来判断合并的啊。



画红线的是要合并的单元格,前面CID 相同的几行。
...全文
293 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
乌镇程序员 2011-05-26
  • 打赏
  • 举报
回复
函数开头有两个变量后面没有用到,删掉好了。
乌镇程序员 2011-05-26
  • 打赏
  • 举报
回复
好了,根据你的表结构,自己修改去吧。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
table { border-collapse:collapse; }
td { border:1px solid #CCC; }
</style>
<script type="text/javascript">
window.onload = function() {
document.getElementById('btn').onclick = function() {
function combinCells() {
var tbl = document.getElementsByTagName('table')[0];
var rows = document.getElementsByTagName('tr');
var cols = rows[0].getElementsByTagName('td').length; //总列数

//开始扫描表格
var ar_startRI = new Array();
var ar_count = new Array();
var CID = '';
for (var i = 1; i < rows.length; i ++) {
var tds = rows[i].getElementsByTagName('td');
if (CID == '') {
CID = tds[0].innerHTML;
var count = 1;
var startRI = 1;
continue;
}
else {
if (tds[0].innerHTML == CID) count ++;
else {
if (count >= 2) {
ar_startRI.push(startRI);
ar_count.push(count);
}
CID = tds[0].innerHTML;
count = 1;
startRI = i;
}
}
}
if (count >= 2) {
ar_startRI.push(startRI);
ar_count.push(count);
}
//alert(ar_startRI);
//alert(ar_count);

//开始合并
for( i = 0; i < ar_startRI.length; i ++) {
var rowIdx = ar_startRI[i];
var tds = rows[rowIdx].getElementsByTagName('td');
tds[0].rowSpan = ar_count[i];
tds[2].rowSpan = ar_count[i];
tds[3].rowSpan = ar_count[i];
tds[4].rowSpan = ar_count[i];
tds[5].rowSpan = ar_count[i];
for(var j = rowIdx + 1; j < rowIdx + ar_count[i]; j ++) {
rows[j].deleteCell(0);
rows[j].deleteCell(1);
rows[j].deleteCell(1);
rows[j].deleteCell(1);
rows[j].deleteCell(1);
}
}
}
combinCells();
}
}
</script>
</head>

<body>
<input type="button" id="btn" value="合并单元合格" />
<table width="400" border="0">
<tr>
<td>CID</td>
<td>CPID</td>
<td>仓库</td>
<td>单位</td>
<td>人</td>
<td>日</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>2685</td>
<td>111</td>
<td>仓库</td>
<td>单位</td>
<td>p</td>
<td>20110526</td>
</tr>
<tr>
<td>2685</td>
<td>222</td>
<td>仓库</td>
<td>单位</td>
<td>p</td>
<td>1</td>
</tr>
<tr>
<td>2685</td>
<td>333</td>
<td>仓库</td>
<td>单位</td>
<td>p</td>
<td>1</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
</body>
</html>
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luallen 的回复:]

引用 1 楼 t5500 的回复:
恩,有点小难度,但实现木问题,你把需求再说明白点,具体要怎么合并(合并为一行还是行数不变单元格跨行合并)。


数不变单元格跨行合并 谢谢
[/Quote]
跨行合并这个弄不了,你只能将行移动到相邻的去,然后合并。。

你的合并时怎么个意思?

ID相同的列ID只显示一次,然后其他内容都在一个单元格内显示?
luallen 2011-05-26
  • 打赏
  • 举报
回复
还没解决 那位大虾帮帮忙
luallen 2011-05-26
  • 打赏
  • 举报
回复
没有人帮帮忙吗
luallen 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 t5500 的回复:]
恩,有点小难度,但实现木问题,你把需求再说明白点,具体要怎么合并(合并为一行还是行数不变单元格跨行合并)。
[/Quote]

数不变单元格跨行合并 谢谢
乌镇程序员 2011-05-26
  • 打赏
  • 举报
回复
恩,有点小难度,但实现木问题,你把需求再说明白点,具体要怎么合并(合并为一行还是行数不变单元格跨行合并)。

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧