0

我的网页上有两个更新的面板来显示一些数据,我在这样的特定时间后刷新面板

<script language="javascript" type="text/javascript">
        window.setInterval(function () {
            __doPostBack('<%= UpdatePanel1.ClientID %>', '');
            __doPostBack('<%= UpdatePanel3.ClientID %>', '');
        }, 2000);
    </script>

这每两秒钟刷新一次面板。问题是我有另一个功能,可以让gridview中的子网格打开和关闭像这样的正负图像

function divexpandcollapse(divname) {
        var div = document.getElementById(divname);
        var img = document.getElementById('img' + divname);
        if (div.style.display == "none") {
            div.style.display = "inline";
            img.src = "../Images/Minus.gif";
            window.setInterval(function () {
                __doPostBack('<%= UpdatePanel1.ClientID %>', '');
                __doPostBack('<%= UpdatePanel3.ClientID %>', '');
            }, 20000);
        } else {
            div.style.display = "none";
            img.src = "../Images/Plus.gif";
            window.setInterval(function () {
                __doPostBack('<%= UpdatePanel1.ClientID %>', '');
                __doPostBack('<%= UpdatePanel3.ClientID %>', '');
            }, 2000);

        }
    }

我试图将回发时间从 2 秒增加到 20 秒,当用户在 gridivew 中单击加号时,再次单击减号时,时间应该再次为 2 秒。但是通过下面的代码,它不会相应地改变时间。任何人都可以告诉我在这个方法中到底缺少什么或者我应该做些什么来获得我的要求。请帮助

4

1 回答 1

0

问题是您没有清除任何可能已经附加的间隔。您需要跟踪间隔,如果有,请将其删除。

<script language="javascript" type="text/javascript">

    var timer = window.setInterval(function () {
        __doPostBack('<%= UpdatePanel1.ClientID %>', '');
        __doPostBack('<%= UpdatePanel3.ClientID %>', '');
    }, 2000);
</script>

function divexpandcollapse(divname) {
    var div = document.getElementById(divname);
    var img = document.getElementById('img' + divname);
    if (window.timer) {
        window.clearInterval(timer);
    }
    if (div.style.display == "none") {
        div.style.display = "inline";
        img.src = "../Images/Minus.gif";
        timer = window.setInterval(function () {
            __doPostBack('<%= UpdatePanel1.ClientID %>', '');
            __doPostBack('<%= UpdatePanel3.ClientID %>', '');
        }, 20000);
    } else {
        div.style.display = "none";
        img.src = "../Images/Plus.gif";
        timer = window.setInterval(function () {
            __doPostBack('<%= UpdatePanel1.ClientID %>', '');
            __doPostBack('<%= UpdatePanel3.ClientID %>', '');
        }, 2000);

    }
} 
于 2013-05-13T12:35:24.367 回答