0

我正在尝试设置其中包含 asp.net gridview 的 div 的样式。我正在使用 javascript 代码。div 是asp.net buttonclick 事件的弹出窗口。

我有以下代码:

function ViewPopup() {

    document.getElementById('PopupDiv').style.visibility = 'visible';
    document.getElementById('PopupDiv').style.display = '';

    var screenHeight = document.documentElement.clientHeight;
    var elementHeight = document.getElementById('PopupDiv').clientHeight;
    if (screenHeight > elementHeight) {
        document.getElementById('PopupDiv').style.top = ((screenHeight - elementHeight) / 2) + 50 +'px';
    }
    else {
        document.getElementById('PopupDiv').style.top = '10px';
        document.getElementById('PopupDiv').style.bottom = '20px';
        document.getElementById('PopupDiv').style.overflow = 'scroll';
    }

    var scrWidth = document.documentElement.clientWidth;
    var elWidth = document.getElementById('PopupDiv').clientWidth;
    document.getElementById('PopupDiv').style.left = ((scrWidth - elWidth) / 2) - 20 + 'px';

    document.getElementById('MaskedDiv').style.display = '';
    document.getElementById('MaskedDiv').style.visibility = 'visible';
} 

问题是 .. 当 screenheight < elementheight 时,控件转到 else 语句并显示带有滚动条的弹出窗口。想象一下弹出窗口的尺寸是 x 和 y。

下次当有一个按钮点击时,如果 screenheight > elementheight,控制转到 if 语句,但弹出尺寸再次是 x 和 y。也就是说,尺寸是从较早的按钮单击事件中携带的。有什么办法可以确保弹出窗口完全适合 gridview 吗?

4

1 回答 1

0

您是否尝试在 var、var 和 if 行上设置断点?然后慢慢单步执行代码?我很好奇“减慢”JavaScript 是否允许获得正确的元素高度和屏幕高度。这不是一个很好的答案,但是我遇到了类似的情况,我不得不通过在其上放置一个计时器来减慢代码的速度,以便它可以获得我元素的正确尺寸,然后在事后继续我的 if 语句。我会显示代码,但那是与前雇主...

我希望在某种程度上这会有所帮助。

于 2013-06-19T22:04:23.137 回答