時計
例1
文字が秒ごとに変わるデジタル時計を作ってみましょう。
上のソースはこれだけです。
<div><input id="out1"></div>
実際に文字を書くJavaScriptの部分は後で挙げます。
例2
普通の文章の中にも のように埋め込めます。
<p>普通の文章の中にも <span id="out2"></span> のように埋め込めます。</p>
実際に文字を書くJavaScriptの部分は後で挙げます。
JavaScript部分
head部分には次のように定義しています。
<script> function clock() { const t = new Date().toLocaleTimeString([], {hour12: false}) document.getElementById('out1').value = t; // 例1 document.getElementById('out2').textContent = t; // 例2 } setInterval(clock, 1000); window.addEventListener('DOMContentLoaded', clock); </script>
window.addEventListener('DOMContentLoaded', clock)
は,本文の骨格が読み込まれたすぐ後で clock()
を実行するためのものです。
細かなこと
window.addEventListener('load', clock);
とすると,ページの骨格だけでなく,画像やスタイルシートなどすべてが読み込まれてから clock()
が呼び出されます。
似た書き方として window.onload = clock;
があります。こちらは,別の window.onload = ...;
があると,最後のものだけが生きます。window.addEventListener()
のほうは複数あっても全部が生きます。
<body onload="clock();">
のようにHTMLの要素に onload
を書く方法もあります。
こういった実行を遅らせる仕組みを使わなくても,out1
,out2
が現れた後に
<script> clock(); </script>
と書くだけでもかまいません。
なお,window.addEventListener('DOMContentLoaded', clock)
がなくても,setInterval(clock, 1000);
は実行されますので,1000ミリ秒(1秒)たてば時計の実行が開始されます。
応用
時計をちょっと変えれば,ロケット発射のカウントダウンになります。