時間がきたら3分ごとアラームを鳴らす


動作ブラウザ 【 IE:4.0  NN:-
Internet Explorer Netscape Navigator DreamPassport iCab
3.0x 4.0x 4.5 5.0x 5.5 2.0x 3.0x 4.0x 4.x 6.0 2 3 2.x
Windows × - × × × × × - × -
Macintosh × - × × × × × - - ×
UNIX - - - - - × × × × × - - -
Dreamcast - - - - - - - - - - × × -

ポイント sec = (new Date()).getSeconds(); min = (new Date()).getMinutes(); if (oldMin != min) { oldMin = min; count++; count %= checkCount; } if ((sec < 3) && flag && document.all && (count == 0)) { mySND.src = "kin.aif";flag = false; } if (sec > 3) flag = true;
説  明 3分ごとにアラームを鳴らすにはsetInterval()を使って定期的にアラームを鳴らす指定時刻かどうかを調べます。その際にカウンタを用意し3分経過したかどうか調べます。これは指定間隔ごとの分数での剰余を求め0(または特定のあまり)かどうかで鳴らすかどうかを判断します。3分経過していたらbgsoundオブジェクトのsrcプロパティに演奏するサウンドファイル名を指定します。ブラウザの動作状態によっては指定時間を経過してしまう場合がありますので、3秒ほどの誤差範囲であればアラームを鳴らすようにしています。この時、フラグ変数(flag)を用意し、一定時間内に一度アラームを鳴らした場合は、二度とその時間内には鳴らないようにします。
サンプル <html> <head> <title>時間がきたら3分ごとアラームを鳴らす</title> <script language="JavaScript"><!-- flag = true; count = -1; checkCount = 3; // 3分ごと oldMin = 99; function alarm() { sec = (new Date()).getSeconds(); min = (new Date()).getMinutes(); if (oldMin != min) { oldMin = min; count++; count %= checkCount; } if ((sec < 3) && flag && document.all && (count == 0)) { mySND.src = "kin.aif";flag = false; } if (sec > 3) flag = true; } // --></script> <bgsound src="silent.aif" id="mySND"> </head> <body onLoad="setInterval('alarm()',1000)"> 00秒にアラーム </body> </html>
補足説明 なし

■サンプルスクリプトを実行する >>実行
■各ブラウザでの動作結果を見る >>View!

写真素材 PIXTA