2014-11-25 41 views
0

这是我的jquery代码,我想运行1秒的定时器,每一秒木材更新div的内部文本到+1,显示时间就像一个时钟,但我想过期木材15秒后,我的意思是我不会在15秒后更新计时器。Jquery Settimeout变量

var count = 0; 
var Update_Div = setInterval(function(){ 
    count++; 
    $("div").text(count); 
    },1000); 

    setTimeout(Update_Div, 15000); 

但15秒后,仍然更新时间,请帮我我如何解决它。 对不起,英语不好。我希望你通过看代码就能理解。

+0

您正在使用的间隔和超时。当然,你只是想使用间隔,并清除它使用'clearInterval(refInterval);'一旦'count'等于15 – 2014-11-25 11:39:19

+0

你不需要设置超时在这里,使用setInterval和clearInterval – 2014-11-25 11:41:02

+0

谢谢!解决了! :) – 2014-11-25 11:42:50

回答

3

这是因为您没有对setTimeout()做任何事情,除了传递间隔ID。

清除您的间隔时,你的超时达:

setTimeout(function(){ 
    clearInterval(Update_Div); 
}, 15000); 

虽然这依赖于我们的计时器同步工作互相它往往不是,将在差异毫秒。

你应该做的,而不是不使用setInterval,创造只setTimeout()一个使用递归函数:

function countTo(max, n){ 
    var n = n || 1; 
    setTimeout(function(){ 
     $('div').text(n); 
     if(n < max) countTo(max, n + 1); 
    }, 1000); 
} 

countTo(15); 

JSFiddle

+0

OMG,如此快速和酷的反应谢谢!!!!!! – 2014-11-25 11:41:58

+0

@HuskerNtn很高兴能有所帮助,但请看我的更新与改进版本。 – George 2014-11-25 11:50:06

2
var count = 0; 
var Update_Div = setInterval(function() { 
    count++; 
    console.log(count); 
    if (count == 15){ 
     clearInterval(Update_Div); 
} 
}, 1000); 
+0

您必须在区间内移动if语句,否则它不会起作用。 – mgibala 2014-11-25 12:12:30

+0

OOPS,你是对的。我只是改变了答案。谢谢 :) – Ehsan 2014-11-25 12:17:31