Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何提前停止函数?_Javascript_Jquery - Fatal编程技术网

Javascript 如何提前停止函数?

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

我做了一个定时函数,在页面加载后延迟9秒再开始。但是,如果用户与它影响的div交互,我希望它被取消。这是我调用的函数的代码

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()谢谢!出列效果很好。我使用了错误的命令来停止该功能。