我尝试在quirks-mode中使用带有Internet Explorer 8的javascript向td元素添加一个类。这似乎有效,因为当我查看源代码时我可以看到添加的类,但是我的css不会影响它,因此根本没有任何视觉上的变化。 我只是添加一个html类来改变背景颜色但没有任何反应。 它在IE正常模式下运行时有效,但这不是一个选项,因为我无法更改网站并且它以怪癖模式运行。
修改
这是一个简单的例子:
<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测试)时不起作用
答案 0 :(得分:3)
Internet Explorer 7及更低版本(以及模拟7时为8)具有完全破坏的setAttribute(和getAttribute)实现。
实际上它的工作原理如下:
HTMLElement.prototype.setAttribute = function (property, value) {
this[property] = value;
}
当属性名称和属性名称不相同时(例如属性名称是保留字(如类)或用于其他内容(如样式))时会中断。)
使用foo.className = 'bar'
代替foo.setAttribute('class','bar')
答案 1 :(得分:1)
我想出了一个系统,它根据你想要添加到元素的任何样式构建样式表,然后将其添加到HTML中。它似乎适用于我尝试过的各种浏览器,包括各种IE浏览器。它不适用于类,但可以很容易地实现上面描述的内容。
文章: http://www.4pmp.com/2009/11/dynamic-css-pseudo-class-styles-with-jquery/