Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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 Can';不要在警报前隐藏div_Javascript_Jquery - Fatal编程技术网

Javascript Can';不要在警报前隐藏div

Javascript Can';不要在警报前隐藏div,javascript,jquery,Javascript,Jquery,我收到一个请求,要求删除一个div并显示一个警报。因此,我的第一个代码如下: $(document).ready(function(){ $('#headerDiv').hide(); alert('something wants to say'); }); 它没有在chrome和edge中的警报之前隐藏div,因此我将警报行更改为 setTimeout(function(){ alert('something wants to say'); },100); 这很好,但我想知

我收到一个请求,要求删除一个div并显示一个警报。因此,我的第一个代码如下:

$(document).ready(function(){

 $('#headerDiv').hide();

 alert('something wants to say');

});
它没有在chrome和edge中的警报之前隐藏div,因此我将警报行更改为

setTimeout(function(){

 alert('something wants to say');

},100);

这很好,但我想知道为什么会发生。此外,我认为问题可能会再次发生,这取决于计算机性能,因此我想知道是否有任何质量修复。

setTimeout
在当前堆栈执行结束时被推送,因此浏览器有时间中断JS并呈现更改。
setTimeout
是一个可能的解决方案

另一种可能是在触发
警报的
.hide()
之后触发事件


(您可以找到有关
setTimeout
实现的更多信息,这是因为JS在任何更改之前先执行。您可以做很多事情

  • 使用不同的方式显示警报,如覆盖
  • 使用
  • 在隐藏后触发,并将警报绑定到该事件

  • 您可以尝试以下解决方案,当隐藏完成时,它将显示
    警报
    。这不取决于您的系统性能

    $(文档).ready(函数(){
    $('#headerDiv').hide({done:function(){alert(“something want say!”);});
    //**您仍然可以添加延迟*/
    //$('#headerDiv').hide({done:function(){setTimeout(function(){alert(“Hiding complete!”)},100)});
    });
    
    
    headerDiv headerDiv
    JS和浏览器呈现在同一线程中运行。所有JS都在浏览器呈现对页面的任何更改之前执行。
    alert
    阻止JS执行,直到用户关闭该框。定时警报是一种解决方案,或者您可以使用非阻塞警报框(库或您自己的实现)。您确定
    #headerDiv
    元素存在吗?浏览器在警报触发之前没有时间重新绘制,您可以使用超时将警报延迟到下一个勾号,此时重新绘制完成。我确定元素存在。我可以问一下浏览器在原始代码中工作正常的原因吗?