2009-08-11 13 views
1

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

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

これまでにみた人は誰ですか?

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

+1

@Erica伝わると思います - へようこそSO、しかし、あなたが試したものを見ることなく、これに答えることになるだろう推測ゲームである。 – karim79

+0

私の後に繰り返し:私はJavaScriptでブラウザを浴びません :-) –

答えて

5

通常、JSコードが実行されているときに、表示されているように、他のすべてのレンダリングが停止されます。あなたはそのようなあなたのページに発生するレンダリングできるように、setTimeout関数を使用しようとすることができます:doMoreStuffはあなたの処理の最後の部分を行います別の関数である

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

注意。

コードをこのように分割すると、ブラウザがいくつかのレンダリングサイクルで取得できるようになります。あなたはあなたのために働く数を見つけるために遅延(上記の50)を試してみたいかもしれませんが、divの内容を設定するだけなら50がOKです(おそらく0も有効です)。

また、私はinnerHTMLプロパティを設定するためのjQueryの構文を覚えていないことが、私はポイントが:)

+0

ニックネームが大好き! – karim79

+0

また、投票して、innerHTMLをjQueryに相当するものに変更しました。 – karim79

+1

はい、遅延が0になることがよくあります。 JSが制御権を放棄するまで、アニメーション化されたgifもアニメーション化されません。 – Nosredna

関連する問題