2

我尝试使用 javascript 和 Internet Explorer 8 在 quirks-mode 中向 td 元素添加一个类。这似乎可行,因为当我查看源代码时我可以看到添加的类,但我的 css 不会影响它,所以视觉上没有任何变化。我只是添加了一个 html 类来更改背景颜色,但没有任何反应。它在 IE 正常模式下运行时可以工作,但这不是一个选项,因为我无法更改站点并且它在 quirks-mode 下运行。

编辑:

这是一个简单的例子:

<html>
<head>
<style>
    .style1 { background-color: #ff0000; }
    .style2 { background-color: #00ff00; }
</style>
</head>
<body>
<table id="table1">
    <tr>
        <td>some text</td>
        <td>goes on</td>
        <td>and on</td>
    </tr>
</table>
<script type="text/javascript">
    var tableElement = document.getElementById("table1");
    tableElement.setAttribute("class", "style1");
</script>
</body>
</html>

请注意,尽管正在添加类(可以使用 IE 开发人员工具查看),但它在 quirks-mode(使用 IE 8 测试)下不起作用

4

2 回答 2

3

Internet Explorer 7 及更低版本(以及模拟 7 时的 8)具有完全破坏的 setAttribute(和 getAttribute)实现。

实际上它是这样工作的:

HTMLElement.prototype.setAttribute = function (property, value) {
    this[property] = value;
}

当属性名称和属性名称不同时(例如,当属性名称是保留字(如类)或用于其他内容(如样式)时),这会中断。

使用foo.className = 'bar'代替foo.setAttribute('class','bar')

于 2010-03-04T12:06:24.017 回答
1

我想出了一个系统,它基于您想要添加到元素的任何样式构建样式表,然后将其添加到 HTML 中。它似乎适用于我尝试过的所有浏览器,包括各种风格的 IE。它不适用于类,但可以轻松实现您上面描述的内容。

文章: http ://www.4pmp.com/2009/11/dynamic-css-pseudo-class-styles-with-jquery/

于 2010-03-04T11:55:48.547 回答