2

我有一张表,我想在 onmouseover/onmouseout 期间“突出显示”。我已经知道这在 IE 中是必需的,但在其他浏览器中不需要。

我设法检测到事件触发并且这个 TR 标签有效地工作。(请注意,原始类“contentTableRow”似乎没有引起任何问题。)

class="contentTableRow" onclick="openForm('SomeID');" onmouseover="highlight('someRowID', true);" onmouseout="highlight('someRowID', false);" id="someRowID" 

一切都很好,花花公子,“突出显示”功能触发并实际上设置了适当的类。

只是 IE 不会处理 CSS 类名的变化。

这是我用来进行更改的 CSS 片段。

.HighlightOn {
    cursor:pointer;
    background-color: #D1DFFF;
}

.HighlightOff {
    background-color: #E1EEFE;
}

当我调试它时,我可以看到类名称正在更新,并且还在 Firebug 中检查它。但似乎 IE 不喜欢这种带有 TR 标签的类的用法。这是我为 Tables 构建类的方式吗?有什么建议吗?

4

3 回答 3

4

你是在改变class而不是classNameclass在 Javascript 中保留为实际的类声明关键字,因此该属性称为className

function highlight(id, b) {
    document.getElementById(id).className = (b ? "HighlightOn" : "HighlightOff");
}

顺便说一句,您可能只想传递“this”来突出显示而不是 id,因此不需要进行document.getElementById()调用

于 2010-04-13T05:14:07.323 回答
3

感谢所有的指点。但这似乎奏效了。

TR.HighlightOn td {
    cursor:pointer;
    background-color: #D1DFFF;
}

TR.HighlightOff  td {
    cursor:pointer;
    background-color: #E1EEFE;
}

在这种情况下,基本上必须明确说明该类在 HTML 中的使用位置。

请注意,我必须相对于我在表中使用 Highlighton/off 类的位置引用 TR 标签和 TD 标签。谢谢詹斯格拉姆。

希望这可以帮助其他有同样问题的人。

(感谢 Jensgram 的领导)

于 2010-04-13T09:04:41.810 回答
1

IE 无法识别 JavaScript 中的“类”。您必须使用“className”作为 IE 中的属性。

于 2010-04-13T05:17:04.660 回答