function clock() {
var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();
document.getElementById('clockArea').innerHTML = h + ":" + m + ":" + s;
}
setInterval('clock()', 1000);
var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();
document.getElementById('clockArea').innerHTML = h + ":" + m + ":" + s;
}
setInterval('clock()', 1000);
1行目 関数 clock を定義しています。実際の内容は 2行目からです。
2行目 Date オブジェクトを生成して、変数 now に代入しています。
3行目 変数 now つまり Date オブジェクトから オブジェクト生成時の 時分秒の「時」を取り出して 、変数 h に代入しています。
4行目 3行目とほぼ同じで、「分」を 変数 m に代入しています。
5行目 3行目とほぼ同じで、「秒」を 変数 s に代入しています。
6行目 見やすさのために 1行空けています。
7行目 document オブジェクトの getElementById() メソッドで、id 属性が clockArea の要素を取得して その innerHTML プロパティに、Date オブジェクトから取得した 「時」「分」「秒」を「:」で区切った文字列にして代入しています。この方法だと HTML に "clockArea" という id 属性を持たせた何かしらのタグ ( <p> , <span> , <div> 等でしょうか… )を書いておく必要があります。その そのタグの innerHTML プロパティの内容を 丸ごと書き換えてしまうので、"clockArea" id を持たせたタグに 他にも子要素があると、それらの子要素は消えてしまうので注意が必要です。
9行目 タイマー処理の setInterval() で、1000ミリ秒 つまり 1秒毎に 関数 clock を呼び出して実行させています。時計なので、1秒毎に「時」「分」「秒」を取得し直して 表示する内容を書き換えているわけです。
文字の大きさや 余白等の見た目に関する部分は CSS で変えています。
最初に書いた 今後の改造は、先ず よりデジタル表示らしくするために「時」「分」「秒」が 1桁の時に 10の桁に 「0」を表示させるようにしたいですね。これは if 文を使って できそうです。それは次回に…。
0 件のコメント:
コメントを投稿