Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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在n秒之后_Javascript_Jquery - Fatal编程技术网

Javascript 阻塞';显示然后隐藏';使用jquery在n秒之后

Javascript 阻塞';显示然后隐藏';使用jquery在n秒之后,javascript,jquery,Javascript,Jquery,乍一看,我试图做一些相当简单的事情,但我做不到。 我有一个按钮和两个隐藏的div。按下按钮时,我希望第一个div显示,n秒后隐藏,然后第二个div显示 html: <button id="button"> push </button> <div id="div1" style="display:none"> firstDiv </div> <div id="div2

乍一看,我试图做一些相当简单的事情,但我做不到。 我有一个按钮和两个隐藏的div。按下按钮时,我希望第一个div显示,n秒后隐藏,然后第二个div显示

html:

<button id="button">
  push
</button>
<div id="div1" style="display:none">
  firstDiv
</div>
<div id="div2" style="display:none">
  secondDiv
</div>
同样的问题:

$("#button").click(()=>{

  var timeLimit = 5000;
  $("#div1").show();
  setTimeout(function() { $("#div1").hide(); }, timeLimit );
  $("#div2").show();
  
});
我还尝试创建一个阻塞睡眠功能,如:

function sleep(ms){
  var start = new Date().getTime();
  while(true){ 
    if(new Date().getTime()-start>ms){
        return; 
     }
  }
}

$("#button").click(()=>{

  var timeLimit = 5000;
  $("#div1").show();
  sleep(timeLimit);
  $("#div2").show();
});
但这根本不起作用

此外,放映#div2只是我问题的一个例证事实上,我不需要先“编译”show然后隐藏,但#div1更像是按钮按下前后的过渡步骤。我希望你理解我的问题(对不起,我的英语)

谢谢

在jquery动画“完成”之后,必须使用该函数来执行某些操作

$(“#按钮”)。单击(()=>{
var时限=5000;
$(“#div1”).show().delay(timeLimit).fadeOut(function(){
$(“#div2”).show();
});
});

推
第一组
二等兵

谢谢,这很有效。问题是我不能使用回调函数,因为实际的代码非常不同。为了举例说明,我使用了一个函数transition()来代替按钮单击事件来执行此显示,然后隐藏动画。这个函数被多次调用,这就是为什么我不能使用完整的回调函数。然后你应该发布真正的代码。
function sleep(ms){
  var start = new Date().getTime();
  while(true){ 
    if(new Date().getTime()-start>ms){
        return; 
     }
  }
}

$("#button").click(()=>{

  var timeLimit = 5000;
  $("#div1").show();
  sleep(timeLimit);
  $("#div2").show();
});