旧IE不动态更新CSS

时间:2011-01-17 17:46:07

标签: javascript html css

我有一张表用一些css来隐藏/显示列。每个td都有类“column”和“columnX”,其中X是列号。 css看起来像:

.column { display: none; }
table.show1 .column1 { display: block; }
table.show2 .column2 { display: block; }

该表开始全部隐藏,用户将其打开。发生这种情况时,根据显示的列,将类添加到表中,如“show1”或“show2”。

这适用于FF,Chrome和IE8。但是IE6 / 7存在“列”不会变成“display:block”的问题。但是,如果我进入开发人员工具栏并切换css规则

table.showX .columnX {display: block; }

它工作正常。就像这些旧的浏览器在通过javascript完成时不知道更新表。另外,如果我在表格中添加类似“show0”的类(不是在javascript中),它在IE6 / 7中工作正常。

任何已知的解决方法吗?

1 个答案:

答案 0 :(得分:0)

首先,表格单元格的正确显示值是“block”;它是“桌上游戏”。现在,无论如何,对于旧版本的IE来说,这是一个没有实际意义的点,因为他们并不真正理解那种花哨的东西。

现在接下来的问题是,旧的IE(6和7,而不是8)在最初渲染表格单元格时具有这种有趣的功能:如果,当表格首次呈现时, <td>(以及顶部的<th>,如果您愿意)元素不可见,那么对DOM的后续更改永远不会使其显示。这样就是愚蠢的;事实上I've asked the same question here

我为解决这个问题所做的工作是将一些JavaScript放到页面上,以便在首次呈现 HTML之后,某些代码可以返回,然后使相应的列不可见。只要它们开始可见,它们就可以在没有事故的情况下关闭并重新开启。