やりたいこと
このような、今日が終わるまでの時間をカウントダウンしてくれるタイマーを作りたい。
結論
実装方法
1. HTMLで時間を表示
それぞれに適当なclassも付与しておきます。
2. Dateオブジェクトで明日までの秒数を出す
まず現在の時間を取得するためにDate
オブジェクトをnow
に代入。そして引数で明日の0:00に設定したDateオブジェクトをtomorrow
に代入。
そしてそれらの差が「明日まであと何ミリ秒なのか」というわけです。
3. ミリ秒を秒・分・時に直す
「秒」は「分」の余りなので、differ
を60(1分)で割った余りが秒になります。
differ / 1000 / 60
で「分」が求められていますが、それは「時」を考慮してない「分」なのでもう一作業。
今回表示したい「分」は「時」の余りなので、「秒」を60(1時間)で割った余りが「分」になるわけですね。
「時」も同じ要領でdiffer / 1000 / 60 / 60
で求められます。
あとはそれぞれfloor
メソッドで小数点以下を切り捨ててあげればOK。
4. HTMLを書き換える
padStart
メソッドで常に2文字になるように前に0を付けてもらいます。あとこのメソッドを使うために文字列に変換しています。
あとはtextContent
で時間の部分の表示を書き換えればOK。
5. 1秒ごとに繰り返す
先ほどまでの処理を関数にまとめ、setInterval
メソッドで1秒ごとに実行してあげれば完成 🎉