在quirksmode中向元素添加类

时间:2010-03-04 08:23:55

标签: javascript css internet-explorer quirks-mode

我尝试在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测试)时不起作用

2 个答案:

答案 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/

相关问题