闯入循环的javascript函数的方法

时间:2013-09-13 19:02:46

标签: javascript

我预计这已经有一百万个答案了。我不知道用来表达这个问题的术语。但...

看看这个:http://jsfiddle.net/QD3UK/8/

$('body').on('click', '.testDiv', function(){
    console.log($(this))
    repeatTest(1)
})

function repeatTest(n){
    window.setTimeout(function(){
        $('.result').append(n+" hi<br />")
        repeatTest(n);
    }, 3000);
    n++
}

我希望循环函数在再次单击testDiv div时再次启动 - 因此只有一个循环迭代 - 它从哪个数字(n)开始并不重要。

请帮帮忙? 感谢

1 个答案:

答案 0 :(得分:5)

您可clearTimeout取消现有的setTimeout。如下所示:

var _handle;

$('body').on('click', '.testDiv', function(){
    clearTimeout(_handle);
    console.log($(this))
    repeatTest(1)
});

function repeatTest(n){
    _handle = window.setTimeout(function(){
        $('.result').append(n+" hi<br />")
        repeatTest(n);
    }, 3000);
    n++;
}