タイマの注意

時計の改良版

タイムアウトで迷惑をかけないよう、そして0〜9秒のとき、 ちゃんと05などと表示されるように時計を改良します。
ただいまです。

<FORM METHOD="post">
ただいま<INPUT NAME="watch" SIZE=15>です。
</FORM>
<SCRIPT LANGUAGE="JavaScript">
function watch() {
	now = new Date();
	hour = now.getHours();
	min = now.getMinutes();
	sec = now.getSeconds();
	if (hour < 10) {
		hour = "0" + hour;
	}
	if (min < 10) {
		min = "0" + min;
	}
	if (sec < 10) {
		sec = "0" + sec;
	}
	document.forms[0].elements[0].value = hour+":"+min+":"+sec;
	setTimeout('watch()', 999); // 1000msec = 1sec
}
watch();
</SCRIPT>

タイマを使うスクリプトを書く場合は注意が必要です。 エラーがあってもsetTimeoutを先に仕掛けてしまうと、 ダイアログを出したあと、次のタイムアウトイベントが発生され エラーダイアログが出まくるという悲惨な目に会います。

ユーザー側の対策としては、ダイアログの表示位置をウィンドウマネージャー が枠で示すとき、その左上隅がFileメニューに半分重なるようにし、 位置確定直後すばやく、Fileメニューをクリックし、Closeでウィンドウを閉じて あげればなんとかなります。

コードインプリメント中は、timeoutの回数を制限するとか、インターバルを 長くする、さらにsetTimeoutを一番最後に持ってくるなどの対策をしたほうが よいでしょう。