自动显示加载gif 5秒

con*_*r.p 9 javascript

我想在用户访问网站时自动显示加载gif,然后在5秒后它就会消失.

我发现这个脚本可以实现我想要的功能,但它不会自动执行.用户需要点击按钮启动它才能达到目的.

<input type = "button" value = "Show image for 5 seconds" onclick = "show()"><br><br>
<div id = "myDiv" style="display:none"><img id = "myImage" src = "images/ajax-loader.gif"></div><br>

<script type = "text/javascript">

function show() {
    document.getElementById("myDiv").style.display="block";
    setTimeout("hide()", 5000);  // 5 seconds
}

function hide() {
    document.getElementById("myDiv").style.display="none";
}

</script>
Run Code Online (Sandbox Code Playgroud)

如果有任何方法可以做到这一点,或者如果有更好的方法,请发表评论.

zie*_*mer 15

只需删除onclick="show()",然后添加show();为JavaScript块的最后一行.

另外,由于我对全局命名空间污染敏感,我会这样做:

<script type="text/javascript">

  (function(){
    var myDiv = document.getElementById("myDiv"),

      show = function(){
        myDiv.style.display = "block";
        setTimeout(hide, 5000); // 5 seconds
      },

      hide = function(){
        myDiv.style.display = "none";
      };

    show();
  })();

</script>
Run Code Online (Sandbox Code Playgroud)

  • 请记住,如果他在页面的头部加载它,那么他的div在dom中不存在.最好在页面加载时执行此操作. (4认同)
  • @DominicGreen不等待页面加载事件失败加载gif的目的?似乎这个按预期工作,div需要在页面的早期声明,show()应该立即调用...或者我错过了什么......? (4认同)

Chr*_*son 5

您可以display: none;从 myDiv 中删除。这样它从一开始就可见,然后在五秒钟后隐藏它。

当您希望它从头开始显示时,无需先用 CSS 隐藏它,然后再用 JavaScript 显示它。

<input type = "button" value = "Show image for 5 seconds" onclick = "show()"><br><br>
<div id = "myDiv"><img id = "myImage" src = "images/ajax-loader.gif"></div><br>

<script type = "text/javascript">   
setTimeout(function(){
   document.getElementById("myDiv").style.display="none";
}, 5000);  
</script>
Run Code Online (Sandbox Code Playgroud)