Javascript clearTimeout()不';不要做它想做的事';那该怎么办
有人能看到下面的代码有什么问题吗。它应该显示从30开始的倒计时,然后用jquery的ajaxJavascript 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
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()”清除了一个间隔计时器,这有点令人不安。