- ベストアンサー
JavaScriptで時間のかかる処理の前に「お待ちください」メッセージを表示する方法
- JavaScriptを使用して、時間のかかる処理の前に「お待ちください」のメッセージを表示する方法について教えてください。
- 上記のコードでは、メッセージが表示される前に時間のかかるメソッドが実行されてしまい、画面上の表示が変わりません。画面上にメッセージが表示された後に処理が実行されるようにする方法を知りたいです。
- Ajax通信ではなく、単純な計算やタグの書き換えなどの処理である場合、JavaScriptでメッセージが表示された後に処理が実行されるようにする方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
<body> <p id="mess" style="display:none">ちょっと、待てよ~</p> <script> function test () { n = 1000; var i, j, k; for (i = n; i--; ) for (j = n; j--; ) for (k = n; k--; ) ; return; } function wait (func) { var cbFunc = function () { setTimeout (func, 5); setTimeout ("mess(0);", 5); }; mess(1); setTimeout (cbFunc,5); } function mess (state) { document.getElementById ('mess').style.display = state ? 'block': 'none'; } wait (test); </script>
その他の回答 (3)
- fujillin
- ベストアンサー率61% (1594/2576)
ANo1です。 ダメですか… では、試しに alert() を入れたらどうなるのでしょうか? function wait{ $("#WaitMsg").html("お待ちください…"); //試しにalert alert("test"); Test(); ←時間がかかるメソッド $("#WaitMsg").html("完了しました"); } これなら、表示できますか?
- foomufoomu
- ベストアンサー率36% (1018/2761)
画面表示を更新する処理が必要なのかもしれません。 >$("#WaitMsg").html("お待ちください…"); の後に、 win.refresh(); を入れてみたらどうでしょうか。 参考 http://www.openspc2.org/JavaScript/Ajax/ref/PrototypeWindowClass/ver1.2.1/ref/window/refresh/index.html
- fujillin
- ベストアンサー率61% (1594/2576)
「お待ちください…」を表示させるために、ブラウザに一旦処理を渡す必要があるのでは? 例えば、 $("#WaitMsg").html("お待ちください…"); setTimeout( function(){ Test(); //←時間がかかるメソッド $("#WaitMsg").html("完了しました"); }, 10); とか。(未検証です)
お礼
ありがとうございます。 ご指摘いただいた方法を取り入れてみたのですが、現象変わらずでした…。