LoginSignup
2
3

More than 3 years have passed since last update.

javascriptで簡単ストップウォッチ

Posted at

HTMLを書く

index.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>自作ストップウォッチ</title>
    </head>
    <body>
        <div id="timerLabel">00:00:00</div>
        <button id="startBtn">START</button>
        <button id="stopBtn">STOP</button>
        <button id="resetBtn">RESET</button>

        <script src="main.js"></script>
    </body>
</html>

javascriptを書く

main.js
'use strict';
{   
    var time = 0;
    var timerLabel = document.getElementById('timerLabel');
    var startBtn = document.getElementById('startBtn');
    var stopBtn = document.getElementById('stopBtn');
    var resetBtn = document.getElementById('resetBtn');
    var id;  // setTimeoutから返される値を入れる変数

    // STARTボタン
    function start() {
        // スタートボタンを押せないようにする(これをしないと何回もスタートボタン押せてしまう)
        startBtn.disabled = true;
        // timeをsetTimeoutで設定したミリ秒ごとに1プラスする
        time++;  

        //分・秒・ミリ秒を計算
        var min = Math.floor(time/100/60)
        var sec = Math.floor(time/100);
        var mSec = time % 100;
        // 分・秒・ミリ秒が1桁の場合は、先頭に0をつける
        if (min < 10) min = '0' + min;
        if (sec >= 60) sec = sec % 60; // 秒が60秒以上になった場合の処理(60になったら0になる)
        if (sec < 10) sec = '0' + sec; 
        if (mSec < 10) mSec = '0' + mSec;

        // timerLabelを更新
        timerLabel.innerHTML = min + ':' + sec + ':' + mSec;
        // setTimeoutでstart関数をループさせるイメージ?
        id = setTimeout(start, 10);
    }

    // STOPボタン
    function stop() {
        // 停止する
        clearTimeout(id);
        // スタートボタンを押せるようにする
        startBtn.disabled = false;

    }

    // RESETボタン
    function reset() {
        // 停止する
        clearTimeout(id);
        // タイムを0に戻す
        time = 0;
        // タイマーラベルをリセット
        timerLabel.innerHTML = '00:00:00';
        // スタートボタンを押せるようにする
        startBtn.disabled= false;
    }

    // クリックした時の処理
    startBtn.addEventListener('click', start, false); // STARTボタン
    stopBtn.addEventListener('click', stop, false); // STOPボタン
    resetBtn.addEventListener('click', reset, false); // RESETボタン
}

参考にした記事

javascriptでストップウォッチを作ってみる。忘備録
【動画・サンプルコード付き】JavaScriptでつくる簡単ストップウォッチ

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3