-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 に答える