天啦, 我都快哭了, 为了完美生成一个报表, 最后需要合并表格中部分单元格, 最开始我是想用 php 的二维数组存储所有单元格内容后来比较相同项, 不过在折腾了2个多小时后, 我被多重循环递归给弄崩溃了, 生成的表格样式越来越混乱.
不得已, 只好出动百度搜索找到 javascript 多个实例, 结果我复制粘贴后根本就无法运行, 最后在 CSDN.net 上找回我以前的账户密码并登陆后下载了一个所谓的 javascript万能table合并单元格, 看在其牛X的名字上我就姑且一试, 其源代码如下:
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<title></title>
</head>
<body>
<script type=”text/javascript”>
function uniteTdCells(tableId){
var table = document.getElementById(tableId);
for(i=0;i<table.rows.length;i++){
for(c=0;c<table.rows[i].cells.length;c++){
if(c==0||c==1||c==2||c==3) //选择要合并的列序数,去掉默认全部合并
for(j=i+1;j<table.rows.length;j++){
var cell1=table.rows[i].cells[c].innerHTML;
var cell2=table.rows[j].cells[c].innerHTML;
if(cell1==cell2){
table.rows[j].cells[c].style.display=’none’;
table.rows[i].cells[c].rowSpan++;
} else break; }
} } }
function closeTD(id){
var table = document.getElementById(id);
for(i=0;i<table.rows.length;i++){
for(c=0;c<table.rows[i].cells.length;c++){
if(c==1||c==2)
if(table.rows[i].cells[c].style.display==’none’)
table.rows[i].cells[c].style.display=’block’;
else if(table.rows[i].cells[c].style.display==’block’||table.rows[i].cells[c].style.display==”)
table.rows[i].cells[c].style.display=’none’;
}
} }
</script>
<table border=”1″ id=”dd”>
<tr><td>1</td><td>3</td><td>5</td><td>1</td></tr>
<tr><td>1</td><td>3</td><td>5</td><td>1</td></tr>
<tr><td>2</td><td>3</td><td>8</td><td>1</td></tr>
<tr><td>2</td><td>4</td><td>8</td><td>3</td></tr>
<tr><td>2</td><td>3</td><td>3</td><td>4</td></tr>
<tr><td>2</td><td>3</td><td>3</td><td>4</td></tr>
<tr><td>2</td><td>4</td><td>8</td><td>4</td></tr>
<tr><td>2</td><td>4</td><td>8</td><td>4</td></tr>
</table>
<input type=”button” value=”合并” onclick=”uniteTdCells(‘dd’)”>
<input type=”button” value=”隐藏/显示列” onclick=”closeTD(‘dd’)”>
<input type=”button” value=”刷新” onclick=”location.href=’uniteCells.html’”>
</body>
</html>
测试结果还不错, 实例可以正常运行, 没有错误, 不过在我嵌入到我的代码中后, 就出现了 “table.rows[j].cells[c] is not undefined” 的错误提示了, 看了其万能的称谓还是夸张了些, 不过好在主体功能完好, 经过我的一番努力调整后总算可以正常运行了, 我修改后的函数如下:
Read more…