- - PR -
Jscriptによる繰り返し処理中の画面描画
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-20 10:42
エクセルのセル値をテキストに吐き出すという単純なJscriptを書いています。
行数が多いので、処理経過を随時表示させようと思っているのですが 処理が終了するまで画面表示することができません。 イメージとしては for(var i=0; i<10000; i++){ document.all.test.innerHTML =i; } のように、繰り返し処理の途中に、メッセージを表示させたいのですが 上記の場合だと、処理の最後「9999」しか表示されません。 何か方法がありましたら、ご教授願います。 | ||||
|
投稿日時: 2007-02-20 10:56
JavaScriptは複数のスレッドが動くわけではないので、ひとつの関数が終わるまでは描画が発生しないと考えてください。
…で。 そういう場合はループではなく、setTimeoutを使って毎回強制的に実行を切ります。 setTimeoutで呼び出された関数内でカウントアップして、必要なら再度setTimeoutです。 | ||||
|
投稿日時: 2007-02-21 22:35
ご返答、有難うございます。
やはり関数が終わるまで描画できないのですね。 メイン関数から複数の処理関数が走るので 要所要所でメッセージを表示させたかったのですが 仕方ないので、ログに吐こうかと思います。 しかし、ログに吐くのであればJscirptである必要性はなかったか。 VBSのほうが情報多いし。 JscriptのほうがVBSよりも画面表示は柔軟なんですけどねぇ。 | ||||
|
投稿日時: 2007-02-21 23:00
興味があったので実装してみました。 setTimeoutやsetIntervalで制御が戻るので、 頻繁に戻してやるとこういう実装も可能になりますね。 |
1