ドットインストール - 3分動画でマスターできるプログラミング学習サービス

  • レッスン一覧
  • 料金プラン
    • レッスン一覧
    • 料金プラン
  • ログイン
  • 運営からのお知らせ

    • 2025/09/04 NEW

      【週刊ドットインストール】 Seoul Startup Hubがおすすめ、レッスン制作・256timesの進捗

    すべて見る
  • トップ /
  • マイページ /
  • main.js

main.js

'use strict';

{
  class Panel {
    constructor() {
      this.el = document.createElement('li');
      this.el.classList.add('pressed');
      this.el.addEventListener('click', () => {
        this.check();
      });
    }

    getEl() {
      return this.el;
    }

    activate(num) {
      this.el.classList.remove('pressed');
      this.el.textContent = num;
    }

    check() {
      if (currentNum === parseInt(this.el.textContent, 10)) {
        this.el.classList.add('pressed');
        currentNum++;
        
        if (currentNum === 4) {
          clearInterval(intervalId);;
        }
      }
    }
  }

  class Board {
    constructor() {
      this.panels = [];
      for (let i = 0; i < 4; i++) {
        this.panels.push(new Panel());
      }
      this.setup();
    }

    setup() {
      const board = document.getElementById('board');
      this.panels.forEach(panel => {
        board.appendChild(panel.getEl());
      });
    }

    activate() {
      const nums = [0, 1, 2, 3];

      this.panels.forEach(panel => {
        const num = nums.splice(Math.floor(Math.random() * nums.length), 1)[0];
        panel.activate(num);
      });
    }
  }

  function runTimer() {
    const timer = document.getElementById('timer');
    timer.textContent = ((Date.now() - startTime) / 1000).toFixed(2);
  }


  const board = new Board();

  let currentNum = 0;
  let startTime;
  let intervalId;

  const btn = document.getElementById('btn');
  btn.addEventListener('click', () => {
    board.activate();
    startTime = Date.now();
    intervalId = setInterval(() => {
      runTimer();
    }, 10);
  });
}
dotinstall

3分動画でマスターできるプログラミング学習サービスです。あなたもプログラミングを始めてみませんか?

サービスメニュー

  • レッスン一覧
  • 料金プラン
  • 法人向けライセンス
  • 256times
  • 運営からのお知らせ
  • プログラミング学習ガイド
  • プログラミング学習相談室
  • ヘルプ

ご利用にあたって

  • 利用規約
  • プライバシーポリシー
  • 利用者情報の外部送信について
  • 運営企業情報
  • 採用情報
  • 教材利用について
  • お問い合わせ

ソーシャルメディア

  • note
  • X (@dotinstall)
  • Facebookページ

更新情報

  • 新着レッスンRSS
  • 新着補足情報RSS

Copyright © 2011-2025 dotinstall.com. All Rights Reserved.