1

私はかなり長いjavascriptスクリプトを持っています。問題は、その途中でdivのinnerHtmlを「ほぼ完了しました。お待ちください」と変更したいということです。問題は、jquery関数を呼び出すことだと思います。関数の成功コールバックで、ページを更新しようとしている別の関数を呼び出します。

firebugを使用してブレークポイントを設定し、コードをステップ実行すると、ページが更新され、divのメッセージが表示されます。しかし、コードを実行させただけでは、メッセージは表示されません。divを更新する前後にアラートボックスを設定すると、それも表示されます。

誰かが前にこのようなものを見ましたか?

ありがとうございました!

4

1 に答える 1

5

通常、JSコードが実行されているときは、表示されているものと同じように、他のすべてのレンダリングが停止されます。次のように、setTimeout関数を使用して、ページでレンダリングを実行できるようにすることができます。

doStuff();
$('#myDiv').html('Almost done, please wait');
setTimeout(doMoreStuff, 50);

doMoreStuffは、処理の最後の部分を実行する別の関数であることに注意してください。

コードをこのように分割できる場合は、ブラウザーがいくつかのレンダリングサイクルに入ることができます。遅延(上記の50)を試して、自分に合った数値を見つけたいと思うかもしれませんが、divの内容を設定するだけであれば、50で問題ありません(おそらく0でも機能します)。

また、innerHTMLを設定するためのjQuery構文を思い出せませんが、要点は理解できると思います:)

于 2009-08-11T00:30:36.027 に答える