代码之家  ›  专栏  ›  技术社区  ›  apparat

在quirksmode中向元素添加类

  •  2
  • apparat  · 技术社区  · 15 年前

    我尝试在InternetExplorer8的quirks模式下使用javascript向td元素添加类。这似乎是可行的,因为当我查看源代码时,我可以看到添加的类,但是我的CSS不会影响它,所以没有任何视觉上的变化。 我只需添加一个HTML类来更改背景色,但什么也不会发生。 它在IES正常模式下运行时可以工作,但这不是一个选项,因为我无法更改站点,而且它在奇怪模式下运行。

    编辑:

    下面是一个简单的例子:

    <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模式下工作(用IE 8测试)

    2 回复  |  直到 14 年前
        1
  •  3
  •   Quentin    15 年前

    Internet Explorer 7和更低版本(模拟7时为8)的setattribute(和getattribute)实现完全中断。

    实际上,它是这样工作的:

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

    当属性名和属性名不相同时(例如,当属性名是保留字(如类)或用于其他东西(如样式)时),此操作将中断。

    使用 foo.className = 'bar' 而不是 foo.setAttribute('class','bar')

        2
  •  1
  •   SlappyTheFish    15 年前

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

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