Javascript clearTimeout中有多个超时
我有ajax在我的站点中加载页面,但这些页面包含某些脚本,包括超时 如果用户进入页面并通过进入此循环退出,则页面超时尚未完成执行,导致多次超时(并且超时有一个循环再次执行) 这是我的代码:Javascript clearTimeout中有多个超时,javascript,Javascript,我有ajax在我的站点中加载页面,但这些页面包含某些脚本,包括超时 如果用户进入页面并通过进入此循环退出,则页面超时尚未完成执行,导致多次超时(并且超时有一个循环再次执行) 这是我的代码: //"REMOVE" IF TIMEOUT IS RUNNING var timer1; var timer2; var timer3; if (timer1 !== undefined) { clearTimeout(timer1); timer1 = ''; } if (timer2
//"REMOVE" IF TIMEOUT IS RUNNING
var timer1;
var timer2;
var timer3;
if (timer1 !== undefined) {
clearTimeout(timer1);
timer1 = '';
}
if (timer2 !== undefined) {
clearTimeout(timer2);
timer2 = '';
}
if (timer3 !== undefined) {
clearTimeout(timer3);
timer3 = '';
}
//LOOP WHEN PAGE LOADS
Loop();
function Loop() {
var randTimeout1 = Math.round(Math.random() * (100)) + 40;
timer1 = setTimeout(function () {
//EXECUTE ONE FUNCTION
var randTimeout2 = Math.round(Math.random() * (100)) + 40;
timer2 = setTimeout(function () {
//EXECUTE ANOTHER FUNCTION
var randTimeout3 = Math.round(Math.random() * (100)) + 45;
timer3 = setTimeout(function () {
//EXECUTE ANOTHER FUNCTION
var rand = Math.round(Math.random() * (3000 - 200)) + 6500;
setTimeout(function () { /*EXECUTE LOOP AGAIN */ Loop(); }, rand);
}, randTimeout3);
}, randTimeout2)
}, randTimeout1)
}
但是删除注释下面的代码
清除超时
超时内的超时不起作用只需对这些变量调用clearTimeout而不进行检查。您可以在
循环
函数的开头调用clearTimeout
,我相信您的clearTimeout是在页面加载时执行的。你需要在页面转换时执行它们。Ivan Cherviakov解决方案解决了我的问题,谢谢。