我试图冻结过去两天的gridview标头,并在Stackoverflow上以及从谷歌搜索中获得了this链接和许多其他链接。当我在IE 6,7上以及在IE8的兼容模式下使用它时,此方法工作正常,但在正常模式下,此代码无法正常工作。

这行给我一个错误。我要实现此功能。

trs[x].style.setExpression("top",  "this.parentElement.parentElement.parentElement.scrollTop + 'px'");


在阅读评论时,我知道scrollableTable.js使用的setExpression方法在IE8中已弃用。

以前我对这个问题一无所知。我希望有一些替代setExpression方法的方法。

如何用此代码中的其他替代方法替换setExpression方法

函数ScrollableTable(tableEl,tableHeight,tableWidth){

this.initIEengine = function() {

    this.containerEl.style.overflowY = 'auto';
    if (this.tableEl.parentElement.clientHeight - this.tableEl.offsetHeight < 0) {
        this.tableEl.style.width = this.newWidth - this.scrollWidth + 'px';
    } else {
        this.containerEl.style.overflowY = 'hidden';
        this.tableEl.style.width = this.newWidth + 'px';
    }

    if (this.thead) {
        var trs = this.thead.getElementsByTagName('tr');
        for (x = 0; x < trs.length; x++) {
            trs[x].style.position = 'relative';
            trs[x].style.setExpression("top", "this.parentElement.parentElement.parentElement.scrollTop + 'px'");
        }
    }

    if (this.tfoot) {
        var trs = this.tfoot.getElementsByTagName('tr');
        for (x = 0; x < trs.length; x++) {
            trs[x].style.position = 'relative';
            trs[x].style.setExpression("bottom", "(this.parentElement.parentElement.offsetHeight - this.parentElement.parentElement.parentElement.clientHeight - this.parentElement.parentElement.parentElement.scrollTop) + 'px'");
        }
    }
    eval("window.attachEvent('onresize', function () { document.getElementById('" + this.tableEl.id + "').style.visibility = 'hidden'; document.getElementById('" + this.tableEl.id + "').style.visibility = 'visible'; } )");
};

最佳答案

尝试这个:

for (x=0; x < trs.length; x++)
{
    trs[x].style.position = 'fixed';
    trs[x].style.top.setExpression = "this.offsetParent.scrollTop";
}


这个对我有用!

07-26 02:43