1

実行を完了するのに 10 分以上かかる mysql データベースから大量のデータを取得しています。アプリケーションにビジュアルを追加しようとしているため、スクリプトの実行中に読み込み中の画像 gif が表示されます。

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

私のスクリプトは 2 つの部分で構成されています。最初の部分が完了したらバッファからのデータを表示し、2 番目の部分を実行するために移動するようにこれら 2 つのphp関数を配置します。flush(); ob_flush();2番目の部分が完了したら、JavaScriptコードで画像を非表示にしたい

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

問題は、php関数を呼び出す前にJavaScriptコードを配置すると機能flush() し、画像が非表示になりますが、Javaスクリプト関数の後にJavaScriptコードを配置するとflush()機能しません。

fadeout()スクリプトにかかる時間が正確にわかっている場合は関数を使用しますが、それはユーザーの選択に依存します。

どんな提案や考えも高く評価されます。

ありがとう!

4

2 に答える 2

2

関数をすべてスキップして、引数にthis.display='none'直接入れることができます。onloadページが完全にロードされた直後に実行する必要がある JavaScript コードが含まれる場合があります。例:

<body onload="hideload();">

呼び出されなかった理由hideload()は、ページの読み込みが完了したときに存在しなかったためです (少なくとも、JavaScript ランタイムによってまだ解析されていませんでした)。

edit: @mongotops edit が承認されたのは、彼がすでに回答として受け入れているためです。

于 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 に答える