Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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 jQuery-setInterval/clearInterval延迟_Javascript_Jquery_Html_Setinterval_Clearinterval - Fatal编程技术网

Javascript jQuery-setInterval/clearInterval延迟

Javascript jQuery-setInterval/clearInterval延迟,javascript,jquery,html,setinterval,clearinterval,Javascript,Jquery,Html,Setinterval,Clearinterval,我是jQuery的新手,正在尝试在一定时间内填充一个div。当时间到了,我想清除分区-非常简单,对吗 小结:我点击一个按钮,div开始填充(使用animate({height:“100%”,workPeriod*1000)在20秒的工作周期内填充。填充完成后,我希望div清空。div填充没有问题,完成后大约需要5-10秒,然后使用animate({height:“0%”)清除,工作周期*5000) $(“#开始”)。单击(函数(){ var工作周期=20 var start=新日期($.now(

我是jQuery的新手,正在尝试在一定时间内填充一个div。当时间到了,我想清除分区-非常简单,对吗

小结:我点击一个按钮,div开始填充(使用
animate({height:“100%”,workPeriod*1000)
在20秒的工作周期内填充。填充完成后,我希望div清空。div填充没有问题,完成后大约需要5-10秒,然后使用
animate({height:“0%”)清除,工作周期*5000)

$(“#开始”)。单击(函数(){
var工作周期=20
var start=新日期($.now());
var end=新日期(start.getTime()+1000*工作周期);
var workInterval=setInterval(函数(){
var currentDif=Math.floor((新日期($.now())-end)/1000)*-1;
如果(电流dif<0){
$(“#会话时间”)。设置动画({
高度:“0%”
}, 0);
clearInterval(工作区间);
//我希望上面的动画立即发生,但它发生几秒钟后
//clearInterval调用
}否则{
$(“#会话时间”)。设置动画({
身高:“100%”
},工作周期*1000);
}
}, 1000);
问题:如何在div满后立即将其清空,而不是等待5-10秒


顺便说一句,我对jQuery非常陌生,在编程方面仍然是一个初学者,因此任何建议都会受到欢迎。因此,如果您想在动画完成后调用另一个函数/动画,那么该功能已经内置到jQuery的animate函数中


我试图让它与上面发布的代码一起工作,但我无法让计时器工作。

因此,如果您想在动画完成后调用另一个函数/动画,该功能已经内置到jQuery的animate函数中


我试图让它与上面发布的代码一起工作,但我无法让你的计时器工作。

问题是什么?或者你只是想将代码共享给社区?我的错是没有说清楚。我如何让div立即清空而不是等待5-10秒?问题是什么?或者你只是想将代码共享给community?我没有说清楚,这是我的错。我怎样才能让div立即清空,而不是等待5-10秒?
$('#begin').click(function () {
    var workPeriod = 20
    var start = new Date($.now());
    var end = new Date(start.getTime() + 1000 * workPeriod);

    var workInterval = setInterval(function () {
        var currentDif = Math.floor((new Date($.now()) - end) / 1000) * -1;
        if (currentDif < 0) {
            $('#session-time').animate({
                height: '0%'
            }, 0);
            clearInterval(workInterval);
            //I want the animation above to occur instantly but it's happening several seconds after
            //the clearInterval call
        } else {
            $('#session-time').animate({
                height: '100%'
            }, workPeriod * 1000);
        }
    }, 1000);
$( "#clickme" ).click(function() {
  $( "#book" ).animate({
    opacity: 0.25,
    left: "+=50",
    height: "toggle"
  }, 5000, function() {
    // Animation complete.
  });
});