Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在quirksmode中将类添加到元素_Javascript_Css_Internet Explorer_Quirks Mode - Fatal编程技术网

Javascript 在quirksmode中将类添加到元素

Javascript 在quirksmode中将类添加到元素,javascript,css,internet-explorer,quirks-mode,Javascript,Css,Internet Explorer,Quirks Mode,我尝试在怪癖模式下使用javascript和InternetExplorer8向td元素添加一个类。这似乎是可行的,因为我可以在查看源代码时看到添加的类,但我的css不会影响它,所以视觉上没有任何变化。 我只是添加了一个html类来更改背景颜色,但什么也没发生。 它在IEs正常模式下运行时可以工作,但这不是一个选项,因为我无法更改站点,并且它在怪癖模式下运行 编辑: 下面是一个简单的例子: <html> <head> <style> .style1 {

我尝试在怪癖模式下使用javascript和InternetExplorer8向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>

.style1{背景色:#ff0000;}
.style2{背景色:#00ff00;}
一些文本
继续
等等
var tableElement=document.getElementById(“表1”);
setAttribute(“类”、“样式1”);

请注意,尽管该类正在被添加(可以使用IE开发工具查看),但它在“怪癖”模式下(使用IE 8进行测试)不起作用。

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

第条:
Internet Explorer 7和更低版本(以及模拟7时的8)的setAttribute(和getAttribute)实现完全中断

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

HTMLElement.prototype.setAttribute = function (property, value) {
    this[property] = value;
}
当属性名称和属性名称不相同时(例如,当属性名称是保留字(如类)或用于其他内容(如样式)时),此操作将中断


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

您使用的是纯js还是库?你能添加js和生成的HTML吗?我使用的是纯js,看看我的editHTML类。不是CSS类。CSS有类选择器,可以使规则集应用于具有HTML类或UA知道的特定XML模式中的类的元素。我已经改变了这一点,以减少混淆,这也是一种很好的方法,但是foo.className='bar'是解决我问题的更好的解决方案。我有一个类似的问题,只是我的类是这样的:
table.Show1.cellType2,table.Show1.cellType3{display:none;}
这个修复程序无法使单元格再次缩回。