js合并表格
< html > < head > < meta http-equiv="Content-Type" content="text/html; charset=gb2312"> < title >合并表格</ title > < script language="javascript" type="text/javascript"> /////////////////////////////////////////////// // 功能:合并表格 // 参数:tb--需要合并的表格ID // 参数:colLength--需要对前几列进行合并,比如, // 想合并前两列,后面的数据列忽略合并,colLength应为2 // 缺省表示对全部列合并 // data: 2005.11.6 /////////////////////////////////////////////// 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) break; 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()); } } } //合并列 for (i = 0; i < rowCount; i++) { colCount = tb.rows[i].cells.length; obj1 = document.getElementById(tb.rows[i].cells[0].id); for (j = 1; j < colCount; j++) { if (j >= colLength) break; if (obj1.colSpan >= colLength) break; obj2 = document.getElementById(tb.rows[i].cells[j].id); if (obj1.innerText == obj2.innerText) { obj1.colSpan++; obj2.parentNode.removeChild(obj2); j = j - 1; } else { obj1 = obj2; j = j + obj1.rowSpan; } } } } ///////////////////////////////////////// // 功能:检查表格是否规整 // 参数:tb--需要检查的表格ID // data: 2005.11.6 ///////////////////////////////////////// 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 > for </ td > < td > for </ td > < td > </ td > < td > 100 </ td > < td > 200 </ td > </ tr > < tr > < td > a </ td > < td > for </ td > < td > for1 </ td > < td > </ td > < td > 150 </ td > < td > 230 </ td > </ tr > < tr > < td > a </ td > < td > if1 </ td > < td > if1 </ td > < td > </ td > < td > 100 </ td > < td > 200 </ td > </ tr > < tr > < td > a </ td > < td > if2 </ td > < td > if2 </ td > < td > </ td > < td > 300 </ td > < td > 240 </ td > </ tr > < tr > < td > a </ td > < td > if </ td > < td > if </ td > < td > </ td > < td > 320 </ td > < td > 230 </ td > </ tr > </ table > < br > < input type="button" value="合并表格" onclick="uniteTable(table1,3)"> </ body > </ html > |
———————————————————————————————————
浩瀚的天空,会有改变的希望,世界会不会变得更加好,选择在於我们的手上。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义