1

我正在从 mysql 数据库中提取大量数据,这些数据需要 10 多分钟才能完成运行,我正在尝试向我的应用程序添加一些视觉效果,因此在脚本运行时我正在显示加载图像 gif。

<img id="dvLoading" alt="src="/img/loadingpage.gif" 
onload="hideload()"/>

我的脚本是两部分,当第一部分完成时,我将这两个php函数flush(); ob_flush();用于显示缓冲区中的数据,然后运行第二部分。所以在第二部分完成后,我想通过 javascript 代码隐藏图像

<script>
function hideload(){
  document.getElementById('dvLoading').style.display = 'none';
}
</script>

问题是,当我在调用 php 函数之前放置 JavaScript 代码时flush() 它可以工作并隐藏图像,但是当我将 javascript 代码放在flush()java 脚本函数之后它不起作用。

如果我确切知道脚本需要多长时间,我将使用 usefadeout()函数,但这取决于用户的选择。

任何建议或想法将不胜感激。

谢谢!

4

2 回答 2

2

您可以一起跳过该函数并this.display='none'直接放入onload参数中。它可能包含任何应在页面完全加载后立即执行的 JavaScript 代码。例子:

<body onload="hideload();">

调用失败的原因hideload()是页面加载完成时它不存在(至少它还没有被javascript运行时解析)

编辑: 批准@mongotops 编辑,因为他已经接受它作为答案。

于 2013-02-07T17:49:18.663 回答
1

为什么要在加载事件中隐藏它,而更好的方法是初始化默认 CSS 选项。

像这样

<div id="dvLoading" style="display:none;">
 <img  src="/img/loadingpage.gif" />
</div>

它更快更干净。而且您不需要为此使用 PHP。您不应该真正混合 JavaScript 和 PHP 职责。

在 jquery-ajax 你可以这样处理:

$.ajax({

   beforeSend: function(){
     $("#dvloading").show(100);
   },
   complete : function(){
     $("#dvloading").hide(100);
   }
});
于 2013-02-07T18:03:24.257 回答