実装したいこと
Jsでカウントダウン機能を作ったのですが、Jsだとサーバーからの時間が取れないので、どうにかRailsから送れるようにしたいです。
function countdown(){ const now=new Date(); //ここをrailsから取りたい const tomorrow=new Date(now.getFullYear(),now.getMonth(),now.getDate()+1); const differ=tomorrow.getTime()-now.getTime(); const sec=Math.floor(differ/1000)%60; const min=Math.floor(differ/1000/60)%60; const hour=Math.floor(differ/1000/60/60); document.getElementById("hour").textContent=String(hour).padStart(2,"0"); document.getElementById("min").textContent=String(min).padStart(2,"0") document.getElementById("sec").textContent=String(sec).padStart(2,"0") setTimeout(countdown,1000); } countdown();
カウントダウンを出しているviewにTime.currentを置いたのですが、毎秒とることができないので詰まっています。
どなたかご教授お願いします。
## 再修正
// start_timeとcurrent_timeはviewから取っています。 const start_time = new Date(document.getElementById('start_time').dataset.time); const countdown = () => { const current_time = new Date(document.getElementById('current_time').dataset.time); var diff = start_time - current_time; if (diff <= 0) { alert('セール開始です!'); } const diff_sec = Math.floor(diff / 1000) % 60; const diff_min = Math.floor(diff / 1000 / 60) % 60; const diff_hour = Math.floor(diff / 1000 / 60 / 60) % 24; const diff_day = Math.floor(diff / 1000 / 60 / 60 / 24); document.getElementById('min').textContent = String(diff_min).padStart(2, '0'); document.getElementById('sec').textContent = String(diff_sec).padStart(2, '0'); document.getElementById('hour').textContent = String(diff_hour).padStart(2, '0'); document.getElementById('day').textContent = String(diff_day).padStart(2, '0'); diff --; setTimeout(countdown, 1000); } countdown();
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/29 11:52 編集
2021/05/29 11:57
2021/05/29 11:59
2021/05/29 12:42
2021/05/30 00:15
2021/05/30 00:26
2021/05/30 00:27
2021/05/30 03:16
2021/05/30 03:56
2021/05/30 04:10
2021/05/30 04:14