人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBScriptについて質問です。

リアルタイムに処理のログを表示するような
TextAreaを作りたいと思っています。

以下のようなサンプルを書いてみたのですが、
処理がすべて終わってから再描画されてしまい
意図した動きになりません。

どのように解決すればよいか教えてください。
>|html|
<html>
<head>
<title>Log Viewer</title>
<script language="VBScript" />
Function append()
logs.value = logs.value & "aaaa" & vbcrlf
MsgBox ""
End Function

Function push()
For i = 0 to 100
append()
Next
End Function

</script>
</head>
<body>
<textarea id="logs" col="50" rows="10"></textarea>
<input type="button" value="push" onclick="vbscript:push()" />
</body>
</html>
||<

●質問者: kenk
●カテゴリ:コンピュータ
✍キーワード:HTML NeXT PUSH VBScript リアルタイム
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●20ポイント

最後に MsgBox を出したいのならば

For i = 0 to 100

append()

Next

この後に 入れないとダメです。


For i = 0 to 100

append()

Next

MsgBox ""

といった感じです。

◎質問者からの返答

やりたいことは"aaaa"という文字列が

TextAreaに対して一行一行更新されることです。

MsgBoxの行はデバッグ用途でいれたので、

質問の意図とは関係がありません。

質問がわかりにくくてすいません…。


2 ● KUROX
●20ポイント

XP SP2/IE6 の環境では、正常動作しています。

MsgBox logs.value しにしてタイミングを見てみましたが、

MsgBox の表示とtextarea id="logs"の表示更新は

同時でした。

◎質問者からの返答

回答ありがとうございます。

ちなみにMsgBoxの行をコメントアウトしても

リアルタイムに表示更新されますでしょうか?

ちなみに当方の環境は2000SP4/IE6です。


3 ● F-15X
●40ポイント ベストアンサー

setTimeoutを使用してみては?

例えば、

<script language="VBScript" />

Const CNT_MAX = 10

Const INTERVAL = 20

Dim idTimer

Dim cnt

Function append()

    window.clearTimeout(idTimer) 

    logs.value = logs.value & "aaaa" & vbcrlf

    cnt = cnt + 1

    If cnt >= CNT_MAX then

        Exit Function

    End If

    idTimer = window.setTimeout("append", INTERVAL, "VBScript") 

End Function

Function push()

    cnt = 0

    Call append()

End Function

</script>

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ