Javascriptを使って簡単なストップウオッチを作る➆

Javascriptを使って簡単なストップウオッチを作る

ストップウオッチを作ってみよう➆

「リファクタリング」(コードの動作を変えずに、処理を整理すること)してストップボタンを押したら「stop」と表示させる。

赤字が今回追記したコードです。

ストップウォッチ

0
JavaScript // ここからリファクタリングしたコード
function addMessage(message){
var messageElm = document.createElement(‘div’);
messageElm.innerText = message;
logElm.appendChild(messageElm)
}


var displayElm = document.getElementsByClassName(‘display’)[0];
var logElm = document.querySelector(‘.log’);
var timer = null;

var startButton = document.getElementsByClassName(‘startButton’)[0];
startButton.addEventListener(‘click’, function(){
if(timer === null){
displayElm.innerHTML = seconds;
var seconds = 0;
timer = setInterval(function(){
seconds++;
},1000);
addMessage(‘start!’)
}
});

var stopButton = document.getElementsByClassName(‘stopButton’)[0];
stopButton.addEventListener(‘click’, function(){
if(timer !== null){
clearInterval(timer);
timer = null;
addMessage(‘stop!’);
}
});

解説

function addMessage(message){リファクタリングして新たにaddMessageという関数を作ります。
var messageElm = document.createElement(‘div’);指定した名前のHTMLタグを作成できるcreateElementにて’div’を作り、それを変数messageElmに代入します。
messageElm.innerText = message;先に作った変数messageElmにinnerTextを使い、それをmessageとし、引数もmessageとします。
logElm.appendChild(messageElm)}appendChildを使って、作成したタグをlogElmの子要素としてmessageElm(ここではdiv)要素をブラウザに表します。
var displayElm = document.getElementsByClassName(‘display’)[0];HTMLのドキュメントからdisplayというクラスがついている要素を全て取得し、「0」で取得した配列の一番初めの要素を取り出す。それを変数displayElmに代入します。
var logElm = document.querySelector(‘.log’);querySelectorは引数に与えたCSSセレクタに合致する画面上のHTMLタグ要素を一つ取得します。
var timer = null;intervalIDの数値を入れておくための変数timerを用意します。
var startButton = document.getElementsByClassName(‘startButton’)[0];HTMLのドキュメントからstartButtonというクラスがついている要素を全て取得し、「0」で取得した配列の一番初めの要素を取り出す。それを変数startButtonに代入します。
startButton.addEventListener(‘click’, function(){~取り出したstartButtonに対してクリックイベントのリスナを指示する
if(timer === null){~ } もしtimer変数がnullならば、startButtonのクリックが動作する
displayElm.innerHTML = seconds;先に変数定義したdisplayElmからinnerHTMLを呼び出し、それを秒数の数字とするsecondsとさせ数字を変更します。
var seconds = 0;変数secondsを定義し、それを0とし、1秒ごとに加算されるようにする。
timer =setInterval(function(){一定時間ごとに処理を繰り返す setIntervalを使います。第一引数の関数内容を、第二引数の時間間隔で何度も呼び出します。そして戻り値を変数timerに代入しておくことでintervalIDを持ち続けるようにします。
seconds++;1つずつ加算されるようにする。
},1000);第二引数はミリ秒単位なので、1000と指定して1秒ごとに呼び出されるように指示します。
addMessage(‘start!’);
}
});
関数addMessageを作動させstart!を表示させる。
var stopButton = document.getElementsByClassName(‘stopButton’)[0];HTMLのドキュメントからstoptButtonというクラスがついている要素を全て取得し、「0」で取得した配列の一番初めの要素を取り出す。それを変数stopButtonに代入します。
stopButton.addEventListener(‘click’, function(){取り出したstopButtonに対してクリックイベントのリスナを指示する
if(timer !== null){~ } もしtimer変数がnullでないならば、stopButtonのクリックが動作する。
clearInterval(timer);clearIntervalをtimerに適用する
timer = null;停止したときにtimer変数に初期状態のnullを代入します。
addMessage(‘stop!’);
}
});
関数addMessageを作動させstop!を表示させる。

お疲れ様でした。今回はここまでにしましょう。ゆっくりマイペースで継続しましょう。

この本から引用、参考にして学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが3,000円弱ならコスパよく、買っておいてよかったと満足してます。


わからないことはプロフェッショナルから学ぶのが一番

キャリアアップに必要なスキルを取得しよう。

オンラインで受講ができるスクールですので、全国どこからでも。