今回は簡単なカウントダウンアプリを作ります。
Webアプリなので、ブラウザに表示させるためにHTMLとCSSを実装します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>App</title>
</head>
<body>
<header><h1>カウントダウンタイマー</h1></header>
<main></main>
<p id="time">00:01:00</p>
<button id="start">スタート</button>
<button id="stop">ストップ</button>
<button id="reset">リセット</button>
<p id="messeage"></p>
<footer>Copylight</footer>
</body>
</html>
では、JavaScriptを実装していきましょう。
コメントアウトで各コードの説明を書いておきます。
/* 変数を定義 */
let timer; // タイマーを格納する変数
let totalSeconds = 60; // 初期の秒数(60秒)
let running = false; // タイマーの動作状態
let messeage = " "; // メッセージの初期値
/* タイマーの表示を更新する関数 */
const updateDisplay = () => {
let minutes = Math.floor(totalSeconds / 60); // 分を計算
let seconds = totalSeconds % 60; // 秒を計算
messeage = " ";
if (totalSeconds === 30) {
messeage = "残り30秒!";
}else if (totalSeconds === 3) {
messeage = "残り3秒!";
}else if (totalSeconds === 2) {
messeage = "残り2秒!";
}else if (totalSeconds === 1) {
messeage = "残り1秒!";
}else if (totalSeconds === 0) {
messeage = "終了!";
}
document.getElementById('time').textContent =
`00:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
document.getElementById('messeage').textContent = messeage;
}
/* スタートボタンの処理 */
const startTimer = () => {
if (!running) { // タイマーが動いていないときのみ実行
running = true; // タイマーを開始状態にする
timer = setInterval(() => {
if (totalSeconds > 0) {
totalSeconds--; // 1秒減らす
updateDisplay(); // 表示を更新
} else {
clearInterval(timer); // タイマーを停止
running = false; // 停止状態にする
}
}, 1000); // 1000ミリ秒(1秒)ごとに実行
}
}
/* ストップボタンの処理 */
const stopTimer = () => {
clearInterval(timer); // タイマーを停止
running = false; // 停止状態にする
}
/* リセットボタンの処理 */
const resetTimer = () => {
clearInterval(timer); // タイマーを停止
totalSeconds = 60; // 秒数を初期値に戻す
running = false; // 停止状態にする
updateDisplay(); // 表示を更新
}
/* 各ボタンのクリックイベントを設定 */
document.getElementById("start").addEventListener("click", startTimer);
document.getElementById("stop").addEventListener("click", stopTimer);
document.getElementById("reset").addEventListener("click", resetTimer);
/* 初回の表示を更新 */
updateDisplay();
以上でカウントダウンタイマーアプリが完成しました!
まずは見たまんまコードを書いて、色々なことを試してみましょう。
MDNのチュートリアルもおすすめです。
MDN Web Docs - JavaScriptチュートリアル
お疲れ様でした。