Javascript 固定表格标题<;td>;IE8上的宽度

Javascript 固定表格标题<;td>;IE8上的宽度,javascript,html,css,Javascript,Html,Css,我有一个在IE6上成功实现的需求,但没有在IE8中按预期工作。说明如下: 一个表有一个带有垂直和水平滚动的固定标题。水平滚动是必要的,因为它有许多列,大约20列。在水平滚动上,标题不是固定的,但在垂直滚动上,标题是固定的。 从技术上讲,这是使用两个表完成的,第一个表作为标题,第二个表作为内容。 现在,表格宽度在IE8上不可见。我发现这是一个CSS问题,尽管我不确定错误的确切位置。期待这一点 //Function to set cell width of table containing head

我有一个在IE6上成功实现的需求,但没有在IE8中按预期工作。说明如下: 一个表有一个带有垂直和水平滚动的固定标题。水平滚动是必要的,因为它有许多列,大约20列。在水平滚动上,标题不是固定的,但在垂直滚动上,标题是固定的。 从技术上讲,这是使用两个表完成的,第一个表作为标题,第二个表作为内容。 现在,表格宽度在IE8上不可见。我发现这是一个CSS问题,尽管我不确定错误的确切位置。期待这一点

//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);
    }
}
//用于同步设置包含标题的表和包含内容的表的单元格宽度的函数。
函数setTableColumnWidth(表1、表2){
对于(i=0;i<21;i++){
var tablecell1=document.getElementById(表1)。行[0]。单元格[i]。偏移网络宽度;
var tablecell2=document.getElementById(表2)。行[0]。单元格[i]。偏移网络宽度;
如果(tablecell1>tablecell2){
document.getElementById(表2)。行[0]。单元格[i]。style.width=tablecell1;
}否则{
document.getElementById(表1)。行[0]。单元格[i]。style.width=tablecell2;
}
如果(i==20){
var table1col12=document.getElementById(表1)。行[0]。单元格[i]。偏移网络宽度;
document.getElementById(表1)。行[0]。单元格[i]。style.width=table1col12+20;
}
}
}
功能检查表(表1、表2){
if(document.getElementById(table1).rows[0]!=null
&&document.getElementById(表2)。行[0]!=null){
setTableColumnWidth(表1、表2);
}
}

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

根据规范,CSS宽度应该有单位。例如,
cell.style.width=“443”
不正确,应该是
cell.style.width=“443px”

如果确定以像素为单位进行测量,则可以使用表格单元格的“宽度”属性。这是没有
样式的
单元格.width
。(这些属性是没有单位的数字,就像offsetWidth一样。)


至于为什么它在IE6中有效而在IE8中无效,那是因为IE8更符合标准。

我没有答案,但我有建议。你不应该用JS攻击IE的布局,因为没有JS的1-2%(5000人中有50-100人)会觉得一切都一团糟。期待一些代码和示例@-那会很糟糕:)@Sean,我不同意。如今,几乎所有的网站都需要js(像这样),ajax、标签、小部件、地图应用程序等无处不在。。。关闭javascript的人都是黑客,他们非常清楚会发生什么,并且可以打开javascript。顺便说一句,它甚至不会是整个1%的人,它只是1-2%的会话(这些人更活跃,也许机器人和脚本也包括在这些统计数据中)。