Javascript 如何提前停止函数?
我做了一个定时函数,在页面加载后延迟9秒再开始。但是,如果用户与它影响的div交互,我希望它被取消。这是我调用的函数的代码Javascript 如何提前停止函数?,javascript,jquery,Javascript,Jquery,我做了一个定时函数,在页面加载后延迟9秒再开始。但是,如果用户与它影响的div交互,我希望它被取消。这是我调用的函数的代码 function buttonchange4(){ $(".button4").css("backgroundColor","yellow").delay(3000).queue(function(next4){ $(".button4").css("backgroundColor","silver"); next4(); }); }; var bu
function buttonchange4(){
$(".button4").css("backgroundColor","yellow").delay(3000).queue(function(next4){
$(".button4").css("backgroundColor","silver");
next4();
});
};
var buttonshow3;
$(document).ready(function(){
$(".button4").delay(9200).queue(function(nextoooo){
buttonchange4();
buttonshow3 = setInterval( buttonchange4, 12000);
nextoooo();
});
});
这是我停止函数的代码
$('.button4').click(function(){
$( ".button4" ).stop();
clearInterval(buttonshow3);
$('.button4').css("backgroundColor","yellow");
});
由于某些原因,在延迟3秒后,它仍然会将按钮的背景颜色更改为银色。。。它似乎停止了延迟功能,直接跳到
buttonchange4()代码>如何停止此操作?返回代码>中断并停止该功能
如果要中断时间间隔,可以采用以下方法:
var i = setInterval(FunctionA, 1000);
clearInterval( i );
或者您可以使用dequeue()停止delay()
代码>:
$( ".button4" ).dequeue();
jQuery的延迟函数没有提供取消它的方法()
因此,我建议使用setTimeout
和cleartimout
,如下所示:
var timeoutId = setTimeout(function() {
// do something
}, 9000)
function cancel() {
clearTimeout(timeoutId)
}
通过使用return。我认为这是设置间隔的问题。。。尝试清除设置间隔,比如为什么有延迟和设置间隔?嵌套的。我需要它每12秒运行一次,从加载页面后的9秒开始。我使用上面的代码设法清除间隔,但它在结束之前仍然会运行buttonchange4()函数一次。@user3362196不需要dequeue()代码>而不是stop()
?比如$(“.button4”).dequeue()代码>谢谢!出列效果很好。我使用了错误的命令来停止该功能。