在线等~~~ 关于 JS 操作 TABLE的TR 样式的问题...

TimLeaf 2008-12-03 09:17:47

<HTML>
<head>
<script language="javascript">
function showDetail(oSpan)
{
var iIndex = oSpan.parentNode.parentNode.rowIndex;
var oTbody = oSpan.parentNode.parentNode.parentNode;
if (oSpan.innerText == "+")
{
oTbody.rows[iIndex + 1].style.display = "";
oTbody.rows[iIndex + 2].style.display = "";
oTbody.rows[iIndex + 3].style.display = "";
oSpan.innerText = "-";
}
else
{
oTbody.rows[iIndex + 1].style.display = "none";
oTbody.rows[iIndex + 2].style.display = "none";
oTbody.rows[iIndex + 3].style.display = "none";
oSpan.innerText = "+";
}
}
</script>
</head>
<body>
<TABLE border=1>
<TBODY>
<TR id=1>
<TD rowSpan=20> </TD>
<TD rowSpan=20></TD>
<TD rowSpan=20>AAAAA</TD>
<TD>1 VS 2<SPAN style="cursor:hand;" onclick="showDetail(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=2 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=3 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=4 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=5>
<TD>1 VS 2<SPAN style="cursor:hand;" onclick="showDetail(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=6 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=7 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=8 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=9>
<TD>1 VS 3<SPAN style="cursor:hand;" onclick="showDetail(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=10 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=11 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=12 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=13>
<TD>1 VS 4<SPAN style="cursor:hand;" onclick="showDetail(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=14 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=15 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=16 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=17>
<TD>1 VS 5<SPAN style="cursor:hand;" onclick="showDetail(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=18 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=19 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=20 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
</TBODY>
</TABLE>
</body>
</HTML>

以上代码,当点击<span>中的+号时,会展开或收缩几行...这是通过控制display来实现的。
不过,现在有个问题 第一行中有rowSpan=20,当操作最后一行的display = none时,rowSpan就会失效...
求解决方法...
...全文
966 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
一弗楚 2008-12-03
  • 打赏
  • 举报
回复
<HTML>
<head>
<script language="javascript">
function showDetail(oSpan)
{
var iIndex = oSpan.parentNode.parentNode.rowIndex;
var oTbody = oSpan.parentNode.parentNode.parentNode;
if (oSpan.innerText == "+")
{
oTbody.rows[iIndex + 1].style.display = "";
oTbody.rows[iIndex + 2].style.display = "";
oTbody.rows[iIndex + 3].style.display = "";
oSpan.innerText = "-";
}
else
{
oTbody.rows[iIndex + 1].style.display = "none";
oTbody.rows[iIndex + 2].style.display = "none";
oTbody.rows[iIndex + 3].style.display = "none";
oSpan.innerText = "+";
}
}
</script>
</head>
<body>
<table border=1>
<tr>
<td valign=top>
<table border=1 height=20>
<tr>
<TD> </TD>
<TD></TD>
<TD>AAAAA</TD>
</tr>
</table>
</td>
<td>
<TABLE border=1>
<TBODY>
<TR id=1>
<TD>1 VS 2<SPAN style="cursor:hand;" onclick="showDetail(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=2 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=3 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=4 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=5>
<TD>1 VS 2<SPAN style="cursor:hand;" onclick="showDetail(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=6 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=7 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=8 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=9>
<TD>1 VS 3<SPAN style="cursor:hand;" onclick="showDetail(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=10 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=11 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=12 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=13>
<TD>1 VS 4<SPAN style="cursor:hand;" onclick="showDetail(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=14 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=15 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=16 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=17>
<TD>1 VS 5<SPAN style="cursor:hand;" onclick="showDetail(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=18 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=19 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=20 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
</TBODY>
</TABLE>
</td>
</tr>
</table>

</body>
</HTML>

这样行不行
TimLeaf 2008-12-03
  • 打赏
  • 举报
回复

<TR id=21 style="DISPLAY: none" height=0>
<TD></TD>
<TD>/</TD>
<TD>/</TD>
</TR>

这个改成~

<TR id=21 height=0>
</TR>

这样就可以了吧...
谢谢了~
满衣兄 2008-12-03
  • 打赏
  • 举报
回复
多加一行,高度设置为0隐藏就行了。

<HTML>
<head>
<script language="javascript">
function showDetail(oSpan)
{
var iIndex = oSpan.parentNode.parentNode.rowIndex;
var oTbody = oSpan.parentNode.parentNode.parentNode;
if (oSpan.innerText == "+")
{
oTbody.rows[iIndex + 1].style.display = "";
oTbody.rows[iIndex + 2].style.display = "";
oTbody.rows[iIndex + 3].style.display = "";
oSpan.innerText = "-";
}
else
{
oTbody.rows[iIndex + 1].style.display = "none";
oTbody.rows[iIndex + 2].style.display = "none";
oTbody.rows[iIndex + 3].style.display = "none";
oSpan.innerText = "+";
}
}
</script>
</head>
<body>
<TABLE border=1>
<TBODY>
<TR id=1>
<TD rowSpan=21> </TD>
<TD rowSpan=21></TD>
<TD rowSpan=21>AAAAA</TD>
<TD>1 VS 2<SPAN style="cursor:hand;" onclick="showDetail

(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=2 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=3 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=4 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=5>
<TD>1 VS 2<SPAN style="cursor:hand;" onclick="showDetail

(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=6 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=7 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=8 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=9>
<TD>1 VS 3<SPAN style="cursor:hand;" onclick="showDetail

(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=10 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=11 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=12 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=13>
<TD>1 VS 4<SPAN style="cursor:hand;" onclick="showDetail

(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=14 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=15 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=16 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=17>
<TD>1 VS 5<SPAN style="cursor:hand;" onclick="showDetail

(this)">+</SPAN></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=18 style="DISPLAY: none">
<TD>    a</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=19 style="DISPLAY: none">
<TD>    b</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=20 style="DISPLAY: none">
<TD>    c</TD>
<TD>/</TD>
<TD>/</TD>
</TR>
<TR id=21 style="DISPLAY: none" height=0>
<TD></TD>
<TD>/</TD>
<TD>/</TD>
</TR>
</TBODY>
</TABLE>
</body>
</HTML>
TimLeaf 2008-12-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ahywg 的回复:]
当操作最后一行的display = none时,rowSpan就会失效

这里不是失效,实际上当最后一个打开时才是正常的表格,你可以用DIV去做,用表格是不太好控制的
[/Quote]
谢谢了~可是必须目前...用table因为数据量远比上面的代码多的多~
一弗楚 2008-12-03
  • 打赏
  • 举报
回复
当操作最后一行的display = none时,rowSpan就会失效

这里不是失效,实际上当最后一个打开时才是正常的表格,你可以用DIV去做,用表格是不太好控制的
zjybushiren88888 2008-12-03
  • 打赏
  • 举报
回复
关注,帮楼主顶

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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