打破javascript函数循环的方法
我想这个问题已经有一百万个答案了&我不知道用什么术语来表达这个问题。但是 看看这个:打破javascript函数循环的方法,javascript,Javascript,我想这个问题已经有一百万个答案了&我不知道用什么术语来表达这个问题。但是 看看这个: $('body')。在('click','testDiv',function()上{ console.log($(this)) 重复测试(1) }) 功能重复测试(n){ setTimeout(函数(){ $('.result').append(n+“hi”) 重复性试验(n); }, 3000); n++ } 我希望循环函数在再次单击testDiv时再次启动-因此只有一个循环迭代-不管它从哪个数字(n)开始
$('body')。在('click','testDiv',function()上{
console.log($(this))
重复测试(1)
})
功能重复测试(n){
setTimeout(函数(){
$('.result').append(n+“hi
”)
重复性试验(n);
}, 3000);
n++
}
我希望循环函数在再次单击testDiv时再次启动-因此只有一个循环迭代-不管它从哪个数字(n)开始
请帮忙?
谢谢您可以
清除超时
来取消现有的设置超时
。比如:
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++;
}
var\u句柄;
$('body')。在('click','testDiv',function()上{
clearTimeout(_句柄);
console.log($(this))
重复测试(1)
});
功能重复测试(n){
_handle=window.setTimeout(函数(){
$('.result').append(n+“hi
”)
重复性试验(n);
}, 3000);
n++;
}
您可以清除超时
取消现有的设置超时
。比如:
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++;
}
var\u句柄;
$('body')。在('click','testDiv',function()上{
clearTimeout(_句柄);
console.log($(this))
重复测试(1)
});
功能重复测试(n){
_handle=window.setTimeout(函数(){
$('.result').append(n+“hi
”)
重复性试验(n);
}, 3000);
n++;
}
查找clearTimeout
。查找clearTimeout
。也许我应该说清楚,我在一个jQuery AJAX循环中,它有一个超时选项。我猜clearTimeout方法在这种情况下不会有帮助。有什么建议吗?Thanks@tozjerimiah你应该澄清你的问题。@tozjerimiah是的,我不太清楚你的意思clearTimeout
将杀死现有的setTimeout
,这样它就不会再次触发。如果您能在问题中提供一个更接近实际场景的示例(包括AJAX内容),这可能会让问题更清楚。感谢您的帮助,当我遇到此场景时,我将使用您的建议。我将开始一个新的线程,因为我已经完成了这个任务。也许我应该说清楚,我在一个jQueryAjax循环中,它有一个超时选项。我猜clearTimeout方法在这种情况下不会有帮助。有什么建议吗?Thanks@tozjerimiah你应该澄清你的问题。@tozjerimiah是的,我不太清楚你的意思clearTimeout
将杀死现有的setTimeout
,这样它就不会再次触发。如果您能在问题中提供一个更接近实际场景的示例(包括AJAX内容),这可能会让问题更清楚。感谢您的帮助,当我遇到此场景时,我将使用您的建议。我要开始一个新的线程,因为我已经把这一个球了。