2011-12-03 52 views
1

我有一个要求已成功实现在IE6上,并没有按预期在IE8中工作。描述如下: 一个表有一个带有垂直和水平滚动的固定标题。水平滚动是必要的,因为它有很多列,大约有20个。在水平滚动中,标题不固定,但是在垂直方向上固定。 从技术上讲,这是通过使用2个表格完成的,第一个表格作为标题,第二个表格作为内容。另外,我正在动态计算TD宽度并使用JAVASCRIPT设置宽度。 现在表格宽度在IE8上不可见。我发现这是一个CSS问题,但我不确定错误的确切位置。期待这一点。固定表头​​在IE8上的宽度

//Function to set cell width of table containing header and the table containing content in synch. 
function setTableColumnWidth(table1, table2) { 

    for (i = 0; i < 21; i++) { 
     var tablecell1 = document.getElementById(table1).rows[0].cells[i].offsetWidth; 
     var tablecell2 = document.getElementById(table2).rows[0].cells[i].offsetWidth; 
     if (tablecell1 > tablecell2) { 
      document.getElementById(table2).rows[0].cells[i].style.width = tablecell1; 


     } else { 
      document.getElementById(table1).rows[0].cells[i].style.width = tablecell2; 


     } 
     if (i == 20) { 
      var table1col12 = document.getElementById(table1).rows[0].cells[i].offsetWidth; 
      document.getElementById(table1).rows[0].cells[i].style.width = table1col12 + 20; 

     } 

    } 
} 
function checkTable(table1, table2) { 
    if (document.getElementById(table1).rows[0] != null 
      && document.getElementById(table2).rows[0] != null) { 
     setTableColumnWidth(table1, table2); 
    } 
} 

这是JS代码。但我不认为这有问题。

+1

我没有答案,但我有建议。你不应该用JS攻击IE的布局,因为1-2%(5000到5000人之间)没有JS,会看到这一切正确的搞砸了。 –

+1

期待一些代码和例子@ [JsFiddle](http://jsfiddle.net/) - 那将是awsome :) – Andrej

+2

@Sean,我不同意。今天几乎任何网站都需要js(如SO),ajax,选项卡,小部件,地图应用程序等无处不在...而关闭了javascript的人是非常了解会发生什么并能够打开它的黑客。顺便说一句,它不会是全部1%的人,它只是**会话的1-2%**(这些人更活跃,也许机器人和脚本也包含在这些统计数据中)。 – TMS

回答

0

根据规格,CSS宽度应该有单位。例如。 cell.style.width = "443"是不正确的,应该是cell.style.width = "443px"
如果您确定以像素为单位进行测量,则可以使用表格单元格的宽度属性。这是cell.width没有style。 (这些属性是没有单位的数字,就像offsetWidth一样。)

至于它为什么在IE6中工作,而不是在IE8中工作,那是因为IE8更好地遵守标准。