javascript窗口间隔不变

时间:2013-05-13 12:26:36

标签: javascript gridview setinterval

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

<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当用户clikc加上signivew内的加号时再次点击减号然后时间应该再次2秒。但是通过下面的代码它不会相应地改变时间。任何人都告诉我这个方法里到底有什么错误,或者我需要做些什么才能得到我的要求.plz help

1 个答案:

答案 0 :(得分: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);

    }
}