現在カウントダウンタイマーを作成しており、
下記記述でタイマー自体はできたのですが、タイマーが00:00:00:00を過ぎても動き続けてマイナス表示になってしまいました。
そこでタイマーを00:00:00:00ちょうどで止めたいです。
javascript
1$(document).ready(function(){ 2//オブジェクト取得 3const counter = document.querySelector('.counter'); 4 5//あと何日メソッド 6function countdowntimer(){ 7 8//今の日時 9const d1 = new Date(); 10//ターゲット日時 11const d2 = new Date('2021/1/13 18:00'); 12//時差(ミリ秒) 13const d3 = d2 - d1; 14// ミリ秒から秒に 15const d3_Sec = Math.floor(d3 / 1000); 16 17//分、時、日の秒数 18const Minute_Sec = 60; 19const Hour_Sec = 60 * 60; 20const Day_Sec = 60 * 60 * 24; 21 22//あと何日 23const d4_Day = Math.floor(d3_Sec / Day_Sec); 24const Day = ("00" + d4_Day).slice( -2 ); 25 26//あと何時間 27const d5_Hour = Math.floor(d3_Sec / Hour_Sec % 24); 28const Hour = ("00" + d5_Hour).slice( -2 ); 29 30//あと何分 31const d6_Minute = Math.floor(d3_Sec / Minute_Sec % 60); 32const Minute = ("00" + d6_Minute).slice( -2 ); 33 34//あと何秒 35const d7_Sec = Math.floor(d3_Sec % 60); 36const Sec = ("00" + d7_Sec).slice( -2 ); 37 38//カウントダウン 39counter.innerHTML = "<span>" + Day + "</span><span>" + Hour + "</span><span>:</span><span>" + Minute + "</span><span>:</span><span>" + Sec + "</span>"; 40 41//1秒ごとに実行 42setTimeout(nanNichi, 1000); 43} 44 45//関数実行 46countdowntimer(); 47});
改善点としてclearTimeoutを使ってとめる方法があると分かり
下記コードに修正したところタイマーが動的に動かなくなり、ロードするごとに動くようになってしまいました。
javascript
1$(document).ready(function(){ 2const counter = document.querySelector('.counter'); 3function countdowntimer(){ 4 const countdown = setTimeout(function(){ 5 //今の日時 6const d1 = new Date(); 7//ターゲット日時 8const d2 = new Date('2020/12/24 17:55'); 9//時差(ミリ秒) 10const d3 = d2 - d1; 11// ミリ秒から秒に 12const d3_Sec = Math.floor(d3 / 1000); 13//分、時、日の秒数 14const Minute_Sec = 60; 15const Hour_Sec = 60 * 60; 16const Day_Sec = 60 * 60 * 24; 17//あと何日 18const d4_Day = Math.floor(d3_Sec / Day_Sec); 19const Day = ("00" + d4_Day).slice( -2 ); 20//あと何時間 21const d5_Hour = Math.floor(d3_Sec / Hour_Sec % 24); 22const Hour = ("00" + d5_Hour).slice( -2 ); 23//あと何分 24const d6_Minute = Math.floor(d3_Sec / Minute_Sec % 60); 25const Minute = ("00" + d6_Minute).slice( -2 ); 26//あと何秒 27const d7_Sec = Math.floor(d3_Sec % 60); 28const Sec = ("00" + d7_Sec).slice( -2 ); 29const remainDay = (d2 - d1); 30 if (remainDay >= 0){ 31 counter.innerHTML = "<span>" + Day + "</span><span>" + Hour + "</span><span>:</span><span>" + Minute + "</span><span>:</span><span>" + Sec + "</span>"; 32 if ((Day == 0) && (Hour == 0) && (Minute == 0) && (Sec == 0)) {//指定の日時が来たら、 33 clearTimeout(countdown);//カウントダウンを止める 34 counter.innerHTML = "<span>test1</span>";//htmlに出力 35 } 36 }else{//指定の日時が過ぎてもテキストを表字させる用 37 counter.innerHTML = "<span>test2</span>"; 38 } 39 }, 1000);//処理を1秒後に予約 40 } 41 countdowntimer();//関数を呼び出す 42}); 43
動的に動かしつつ、目的の日時(00:00:00:00)になったときにタイマーをストップさせるにはどうすればよいのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。