求解:如何根据用户id实现合并单元格

zhaoxiaohua125 2011-12-14 01:02:01


怎样用js或者别的方法合并成2条记录啊,求助大神们
...全文
292 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oggmm 2011-12-14
  • 打赏
  • 举报
回复

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>合并表格</title>
<script type="text/javascript">
var mergeTable = function () {
var table = document.getElementById("table1");
var tempArray = new Array();
var rowList = table.getElementsByTagName("tr");
for (var i = 0; i < rowList.length; i++) {
var data = rowList[i].getElementsByTagName("td");
if (tempArray != null && tempArray.length > 0) {
for (var k = 0; k < tempArray.length; k++) {
if (tempArray[k][0].innerHTML === data[0].innerHTML) {
rowList[i].parentNode.removeChild(rowList[i]);
continue;
}
}
}
tempArray.push(data);
}
};

</script>
</head>
<body>
<table width="400" border="1" id="table1">

<tr>
<td>a</td>
<td>if</td>
<td>100</td>
<td>200</td>
<td>3</td>
</tr>
<tr>
<td>b</td>
<td>for</td>
<td>300</td>
<td>230</td>
<td>4</td>
</tr>
<tr>
<td>a</td>
<td>if</td>
<td>100</td>
<td>200</td>
<td>3</td>
</tr>
</table>
<br><input type="button" value="合并表格" onclick="mergeTable()">
</body>
</html>


点击合并表格按钮就会将3条合并为1条
easyuu 2011-12-14
  • 打赏
  • 举报
回复
你在服务端合并啊,何必在客户端合并,费力啊
zhaoxiaohua125 2011-12-14
  • 打赏
  • 举报
回复
能否把上面的3条记录整合成2条?,谢谢了
zhaoxiaohua125 2011-12-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 oggmm 的回复:]
数据过滤掉重复的再绑定呗

如果数据已经绑定的情况下,那就只能遍历,如果发信息重复的就remove掉该行元素
[/Quote]

大神能否再详细点啊?我是菜鸟太深奥了不懂,这是代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=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=0;i<rowCount;i++){
for(j=0;j<colCount;j++){
tb.rows[i].cells[j].id="tb__" + i.toString() + "_" + j.toString();
}
}
//逐列检查合并
for(i=0;i<colCount;i++){
if(i==colLength) return;
obj1=document.getElementById("tb__0_"+i.toString())
for(j=1;j<rowCount;j++){
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=0;i<tb.rows.length;i++){
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>if</td>
<td>100</td>
<td>200</td>
<td>3</td>
</tr>
<tr>
<td>b</td>
<td>for</td>
<td>300</td>
<td>230</td>
<td>4</td>
</tr>
<tr>
<td>a</td>
<td>if</td>
<td>100</td>
<td>200</td>
<td>3</td>
</tr>
</table>
<br><input type="button" value="合并表格" onClick="uniteTable(table1,4)">
</body>
</html>
oggmm 2011-12-14
  • 打赏
  • 举报
回复
数据过滤掉重复的再绑定呗

如果数据已经绑定的情况下,那就只能遍历,如果发信息重复的就remove掉该行元素
zhaoxiaohua125 2011-12-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zsx841021 的回复:]
参考
[/Quote]

大神,这个我试过了,这个不能跨行合并,您有跨行合并的吗?进入页面后自动加载完成,谢谢了
三石-gary 2011-12-14
  • 打赏
  • 举报
回复

87,990

社区成员

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

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