Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript clearTimeout()不';不要做它想做的事';那该怎么办_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript clearTimeout()不';不要做它想做的事';那该怎么办

Javascript clearTimeout()不';不要做它想做的事';那该怎么办,javascript,jquery,ajax,Javascript,Jquery,Ajax,有人能看到下面的代码有什么问题吗。它应该显示从30开始的倒计时,然后用jquery的ajaxload()函数刷新页面 它在第一次或第二次倒计时时工作正常,但随后计时器开始倒计时太快,有时倒计时到负数,根本不停止 我做错了什么 function refreshPage(){ stopRefresh(); $('div.yui-content').load('rdPage.aspx div.yui-content', doCalculation); } function stopR

有人能看到下面的代码有什么问题吗。它应该显示从30开始的倒计时,然后用jquery的ajax
load()
函数刷新页面

它在第一次或第二次倒计时时工作正常,但随后计时器开始倒计时太快,有时倒计时到负数,根本不停止

我做错了什么

function refreshPage(){
    stopRefresh();
    $('div.yui-content').load('rdPage.aspx div.yui-content', doCalculation);
}

function stopRefresh(){
    clearTimeout(timer);
    clearTimeout(interval);
}

var count, timer, interval;

function startTimer(){
    count = 30;
    timer = setTimeout(refreshPage,count * 1000);
    interval= setInterval(updateTimer,1000);
}
function updateTimer(){
    count --;
    $('#timerSpan').text("Refreshing in " + count + "s");
}


function doCalculation(){
    negativeNumberRed();
    startTimer();

}
编辑:添加了
doccalculations()

将对“stopfresh()”的调用添加到“startTimer()”调用中

我猜您的代码正在设法启动多个间隔计时器实例。它们都将减少相同的计数器

编辑-oops-Dr.Strangelove是正确的-您需要在间隔计时器上使用“clearInterval()”,在超时计时器上使用“clearTimeout()”。(再次编辑好,您可能应该这样做,但Chrome至少似乎通过“clearTimeout()”停止间隔计时器。

将对“stopRefresh()”的调用添加到“startTimer()”调用中

我的猜测是,您的代码正在设法启动多个间隔计时器实例。它们都将递减相同的计数器

编辑-oops-Dr.Strangelove是正确的-您需要在间隔计时器上使用“clearInterval()”,在超时计时器上使用“clearTimeout()”。(再次编辑好,您可能应该这样做,但Chrome至少似乎通过“clearTimeout()”停止间隔计时器。

试试看
clearInterval(interval);
而不是
clearTimeout(interval);

像这样:

function stopRefresh(){
    clearTimeout(timer);
    clearInterval(interval);
}
试一试
clearInterval(interval);
而不是
clearTimeout(interval);

像这样:

function stopRefresh(){
    clearTimeout(timer);
    clearInterval(interval);
}

我认为最好只用间歇时间。。
计数<1
调用refreshPage

时,我认为最好只使用间隔。。
count<1
调用refreshPage

时,
doccalculation
函数在哪里?有些事情让我觉得你没有在这里向我们展示所有的代码……你在哪里调用“startTimer()”,怎么做?doCalculation函数在哪里?有些事情让我觉得你没有在这里向我们展示所有的代码…你把“startTimer()”称为哪里,以及怎么做?对不起,医生,我不是有意要抢你的风头-这是非常重要的一点!!…尽管Chrome,至少,似乎用“clearTimeout()”清除了一个间隔计时器还有,这有点令人不安。对不起,医生,我不是故意要抢你的风头的-这是非常重要的一点!!…尽管Chrome,至少,似乎也用“clearTimeout()”清除了一个间隔计时器,这有点令人不安。