-1

我正在做一个项目,其中我的代码结构为 -

<div id="scroll" class="datagrid" style="position: relative">
<table id="datatable" class="datatable">
<thead id="header" class="header">
<tr>
....
</tr>
<tbody id="content">
<tr>
....
</tr>
</tbody>

对于 thead 中的 tr,我们的表达式为 -

.header tr
{
  top: expression(document.getElementById('datagrid').scrollTop);
}

在 IE8 中,这个表达式被求值并且顶部被设置,这样标题总是可见的。然而,由于表达式在 IE11 中不起作用,因此我们可以为此编写一个 JavaScript 函数。

但是在 IE11 中,top 属性不能按预期工作。即使在应用之后,标题也是不可见的。

有人可以建议可能出了什么问题吗?

PS:我尝试的 Javascript 是:

document.getElementById("header").getElementsByTagName('tr')[0].style.top = document.getElementById('scroll').scrollTop ;
4

2 回答 2

0

style.top接受一个字符串值。尝试添加+"px"到您的表达式中。

document.getElementById("header").getElementsByTagName('tr')[0].style.top = document.getElementById('scroll').scrollTop+"px";

此外,请确保每次发生滚动时都运行表达式。例如,您可以使用onscroll="someFunction()"

<div id="scroll" class="datagrid" style="position: relative" onscroll="scrollFunction(this.id)">
...
<script>
    function scrollFunction(scrollId) {
        var theHeader = document.getElementById('header').getElementsByTagName('tr')[0];
        var scrollBoxTop = document.getElementById(scrollId).scrollTop;

        theHeader.style.top = scrollBoxTop + "px";
    }
</script>
于 2016-03-16T18:20:02.737 回答
0

CSS 表达式仅适用于 IE8 及以下版本。

您可以使用 Javascript 函数来替换表达式,如下所示:

var headerTR = document.getElementById("header").getElementsByTagName("tr");
for(var i = 0; i < headerTR.length; i++) {
    headerTR[i].style.top = document.getElementById('datagrid').scrollTop;
}

希望有帮助。

于 2016-03-14T04:38:02.667 回答