質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

2821閲覧

1時間(60分)のカウントダウンタイマーを表示させたい

tantalus

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/10/06 14:56

標題のとおりです。
下記サイトのようなカウントダウンタイマーを実装したいと考えております。

■実装参考サイト
https://shop.diana-inc.co.jp/lp?u=EB_WMC1_CER_GLB_2980&gclid=Cj0KCQjw3f6HBhDHARIsAD_i3D9BbRQTZE8tSrNyV9Jex5rMsC2x1af9CqVOWfTQOp9o5soy8M-5wFMaAlfOEALw_wcB

つきましては、自分で調べてみて下記サイトを参考に実装してみました。
■参考サイト
https://hakase-labo.com/count_down/

説明の通りにし、ミリ秒までの表示はできたのですがカウントダウンが始まるのを常に59分59秒○○ミリ秒といった具合に設定したいです。

JavaScript

1function CountdownTimer(elm,tl,mes){ 2 this.initialize.apply(this,arguments); 3} 4CountdownTimer.prototype={ 5 initialize:function(elm,tl,mes) { 6 this.elem = document.getElementById(elm); 7 this.tl = tl; 8 this.mes = mes; 9 },countDown:function(){ 10 var timer=''; 11 var today=new Date(); 12 var day=Math.floor((this.tl-today)/(24*60*60*1000)); 13 var hou=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*60*1000)); 14 var min=Math.floor(((this.tl-today)%(24*60*60*1000))/(60*1000))%60; 15 var sec=Math.floor(((this.tl-today)%(24*60*60*1000))/1000)%60%60; 16 var mil=Math.floor(((this.tl-today)%(24*60*60*1000))/10)%100; 17 var me=this; 18 19 if( ( this.tl - today ) > 0 ){ 20 if (hou) timer += '<span class="hou">'+hou+'</span><span class="moji">時間</span>'; 21 timer += '<span class="min">'+this.addZero(min)+'</span><span class="moji">分</span><span class="sec">'+this.addZero(sec)+'</span><span class="moji">秒</span><span class="mil">'+this.addZero(mil)+'</span>'; 22 this.elem.innerHTML = timer; 23 tid = setTimeout( function(){me.countDown();},10 ); 24 }else{ 25 this.elem.innerHTML = this.mes; 26 return; 27 } 28 },addZero:function(num){ return ('0'+num).slice(-2); } 29} 30function countdown(){ 31 var tl = new Date('2025/07/04 00:00:00'); 32 //この上の部分で終了時間を設定するYO! 33 var timer = new CountdownTimer('countdown',tl,'終了しました'); 34 //この上の文は終了した後に表示する文字! 35 timer.countDown(); 36} 37window.onload=function(){ 38 countdown(); 39}

自分で行ったのは日にちはいらないので削除した程度です。
JavaScript初心者のため他の同じような質問も見たのですが、分からず改めてこちらにご質問させていただきました。
どなたかご教授いただけますと大変ありがたいです。

何卒よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 const t0=60*60*1000; 4 const t1=new Date().getTime(); 5 setInterval(()=>{ 6 const t2=new Date().getTime(); 7 const t3=t0+t1-t2 8 const m=(parseInt(t3/60/1000)).toString().padStart(2,'0'); 9 const s=(parseInt(t3/1000)%60).toString().padStart(2,'0'); 10 const ms=(parseInt(t3/10)%100).toString().padStart(2,'0'); 11 timer.textContent=`${m}:${s}.${ms}`; 12 },10); 13}); 14</script> 15<div id="timer"></div>

投稿2021/10/07 00:57

編集2021/10/07 00:59
yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tantalus

2021/10/07 02:01

ご回答頂きまして大変有り難うございます! とても助かります!こちら早速試してみまして無事にうまくいきました! コードも記述していただきましてありがとうございます!
guest

0

普通に拝借すればいいのではないでしょうか?

https://jsfiddle.net/0kupdr6j/

HTML

1<div class="target"></div>

jQuery

1const countdown_timer = function(){ 2 let mins = 30; // ここを変えれば指定の minutes にできます 3 let secs = mins * 60; 4 let msecs = secs * 1000; 5 let start_date = new Date(); 6 let end_date = new Date(start_date.getTime() + msecs); 7 let current_mins = 0; 8 let current_secs = 0; 9 let current_msecs = 0; 10 11 $('.target').append( 12 '<div class="countdown_timer">' 13 + '<p class="time">あと<span class="mins">'+mins+'</span>分<span class="secs">00</span>秒<span class="msecs">00</span></p>' 14 + '</div>' 15 ); 16 17 if ((navigator.userAgent.indexOf('iPhone') > 0 || navigator.userAgent.indexOf('Android') > 0 && navigator.userAgent.indexOf('Mobile') > 0 || navigator.userAgent.indexOf('iPad') > 0 || navigator.userAgent.indexOf('Android') > 0)) { 18 $('.text_attention').html('※このページが表示されてから、<br>60分間の限定割引になります。'); 19 } 20 21 let timer = setInterval(function(){ 22 let now_date = new Date(); 23 24 current_mins = Math.floor(((end_date - now_date) % (24 * 60 * 60 * 1000)) / (60 * 1000)) % 60; 25 current_secs = Math.floor(((end_date - now_date) % (24 * 60 * 60 * 1000)) / 1000) % 60 % 60; 26 current_msecs = Math.floor(((end_date - now_date) % (24 * 60 * 60 * 1000)) / 10) % 100; 27 28 if(current_mins <= 9) { 29 current_mins = "0" + current_mins; 30 } 31 if(current_secs <= 9) { 32 current_secs = "0" + current_secs; 33 } 34 if(current_msecs <= 9){ 35 current_msecs = "0" + current_msecs; 36 } 37 38 $(".time").html( 39 'あと' 40 + '<span class="font_size_xl">' + current_mins + '</span>' 41 + '分' 42 + '<span class="font_size_xl">' + current_secs + '</span>' 43 + '秒' 44 + '<span class="font_size_xl">' + current_msecs + '</span>' 45 ); 46 },10); 47} 48 49countdown_timer();

投稿2021/10/06 16:50

編集2021/10/06 16:54
crazyBaseball

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tantalus

2021/10/06 22:32

ご回答頂きましてありがとうございます! こちら実装参考サイトにあるコードになるんですかね?? こういうのってコードの拝借などしても問題ないのでしょうか? あまりそのへんが詳しくなくて、無知で恐れ入ります。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問