現在jQueryにて、カウントダウンタイマーを作成しておりますが、
タイマーに指定した期間の最終日にinnerHTMLテキストを変える方法がわかりません。
トライしてみたコードは以下になります。
html
1<div class="main-timer"> 2 <p class="main-timer__text">終了まで</p> 3 <div class="main-timer__num"> 4 <div class="timer" id="timer"></div> 5 </div> 6</div>
js
1document.addEventListener('DOMContentLoaded', function() { 2 var Timer = function(saleStartTime, saleEndTime, endMessage, outputDestination) { 3 this.saleStartTime = saleStartTime; 4 this.saleEndTime = saleEndTime; 5 this.endMessage = endMessage; 6 this.outputDestination = outputDestination; 7 }; 8 9 Timer.prototype.countDown = function() { 10 var saleStartTime = new Date(this.saleStartTime); 11 var saleEndTime = new Date(this.saleEndTime); 12 var oneDay = 24 * 60 * 60 * 1000; 13 var countDownTimer = document.getElementById(this.outputDestination); 14 var endMessage = this.endMessage; 15 var currentTimeCD = new Date(); 16 var untilStartTime = new Date(); 17 var untilFinishTime = new Date(); 18 var date = new Date( 2020, 9, 24 ) ; 19 var lastDay = date.getDate() ; 20 var d = 0; 21 22 setInterval(calculateTime, 1000); 23 24 function calculateTime() { 25 currentTimeCD = new Date(); 26 untilStartTime = saleStartTime - currentTimeCD; 27 untilFinishTime = saleEndTime - currentTimeCD; 28 29 if (currentTimeCD < saleStartTime) { 30 d = Math.floor(untilStartTime / oneDay); 31 } else { 32 d = Math.floor(untilFinishTime / oneDay); 33 } 34 35 showTime(); 36 } 37 38 function showTime() { 39 if (currentTimeCD < saleStartTime) { // キャンペーン開始前 40 countDownTimer.innerHTML 41 = '<span class="main-timer__text">キャンペーン開始前</span>'; 42 } else if (currentTimeCD <= lastDay) { 43 countDownTimer.innerHTML 44 = '最終日'; 45 } else if (currentTimeCD >= saleStartTime && currentTimeCD <= saleEndTime) { // キャンペーン期間中 46 countDownTimer.innerHTML 47 = '<span class="main-timer__text">あと</span>' + d + '<span class="main-timer__text">日</span>'; 48 } else if (saleEndTime < currentTimeCD) { 49 $('.main-timer').css('display', 'none'); 50 } 51 } 52 } 53 54 var myTimer = new Timer('2020/09/24 00:00:00', '2020/09/24 23:59:59', '終了!', 'timer'); 55 myTimer.countDown(); 56}, false)
参考にさせていただいたサイトはこちらになります。https://jsfiddle.net/hasa83/zrhmjut4/17/
実装したいこととしましては、
カウントダウンを指定した日付より前の日では、「キャンペーン開始前」テキストを表示し、
キャンペーン期間中は、「あと〇〇日」の〇〇の部分をカウントダウンで表示し、
キャンペーン最終日には、テキストを「最終日」に変更を行い、
終了後は、HTMLタグ自体を削除する、ということを行いたいと思っております。
最終日のテキストを表示させる以外の挙動は問題なく動くのですが、
最終日テキストのみが、HTMLに出力されません。
条件分岐のところで、指定した期間の間で、数日をピックアップして取得する所の書き方が
恐らく間違えているのではないかと思いますが、
正しい記述方法がわかりません。。
ご存知の方お力をお貸しいただけないでしょうか。
どうぞよろしくお願いいたします。