【发布时间】:2012-08-03 12:59:18
【问题描述】:
这是我在这里的第一篇文章,我绝不是一个熟练的 HTML/CSS/JavaScript 程序员,所以如果我表达得不够清楚,请多多包涵 - 如果太罗嗦,请见谅!
我正在为表格内容使用经典的 HTML 表格,并且希望能够更改与我当前悬停的行不同的行的背景颜色。
这样做的原因是我有很多表被分成“子表”,每个表都有自己的标题和下面的一或多行。这些子表 - 都具有相同的样式 - 但是没有编码为表,而是我只是使用不同的类来设置它们的样式(这主要是因为它们太多又太小,每个包含 1-6 行包括标题)。
我想要做的是,一旦您将任何子表悬停,其标题和您当前指向的行都应该改变背景颜色(后者很容易通过 CSS 实现)。感谢在网上找到的 JavaScript,我设法实现了这一点 - 请参阅 sample code,这可能更好地解释了这一点,另请参阅下面的代码 - 但是每个子标题都需要一个唯一的 ID。 (请注意,每个子表都使用单独的 tbody - 如果 onMouseover 事件改为应用于每一行,则子标题的颜色会在从一行悬停到另一行时闪烁/继续 - 这永远不会发生CSS,但仅限于 JavaScript - 当然,还要创建更多代码。)
不必为每个子标题分配唯一的 ID,我想要一个使用类的解决方案,因为每个子表都使用相同的子表(我当然会为 tbody 分配一个类然后)。我想这个棘手的部分可能是确保只有当前子表的标题受到影响,而不是同时受到影响。
如果创建一个解决方案更容易,其中每个子表实际上都被编码为一个单独的表(从语义的角度来看这也可能更好?),那么请这样做。如果 JavaScript 自己应用 onMouseover 等事件当然更好,这样我就不必将其放入每个子表的内联代码中 - 我已经看到这可以用于按钮等等,所以我想这是可能的。
我从未使用过 jQuery,因此更喜欢纯 JavaScript 解决方案。
有关示例代码,请再次查看my fiddle
非常感谢您的任何意见!
JavaScript:
function changeTo(myId) { document.getElementById(myId).className='sub-header-highlight'; }
function changeBack(myId) { document.getElementById(myId).className='sub-header'; }
CSS:
thead { color: #FFF; background: #000; }
.sub-header { color: #FFF; font-weight: bold; background: #F00; }
.sub-header-highlight { color:# FFF; font-weight: bold; background: #0F0; }
tr.sub-header:hover { background: #0F0; } /* if JS turned off */
.sub-row1 { color: #000; background: #FFF; }
.sub-row2 { color: #000; background: #EEE; }
tr.sub-row1:hover, .sub-row2:hover { background: #FF0; }
部分 HTML:
<tbody onMouseover="changeTo('sub1');" onMouseout="changeBack('sub1');">
<tr class="sub-header" id="sub1">
<td>Sub-Header 1</td>
</tr>
<tr class="sub-row1">
<td>Contents of row 1</td>
</tr>
<tr class="sub-row2">
<td>Contents of row 2</td>
</tr>
<tr class="sub-row1">
<td>Contents of row 3</td>
</tr>
</tbody>
【问题讨论】:
-
你也应该把你的代码放在这里。
-
好的,我正在尝试但无法使其正常工作,尤其是HTML部分被删除,将再试一次。
-
如果您查看editing help page,它将显示如何格式化代码以使其显示。 (对于行内代码,用反引号
`包装它,或者对于代码块,用空行分隔代码,前后,每行缩进四个空格)。
标签: javascript html css