前提・実現したいこと
Javascript見習いです。
カウントダウンタイマーを作成しており、ファンクション内のdocument.getElementByIdのid名にそのファンクションのパラメータを代入したいのですが、うまくいきません。
自分なりに解決策を調べてみたのですが、どういったワードで検索していいかもいまいちわからず解決に至ることができませんでした。
変数の命名規則などあまり分かっておらず見づらいかもしれません。
また、既存の質問であるかもしれませんがお教えいただければ幸いです。
発生している問題・エラーメッセージ
1776日 00時間 17分 23秒 question.js:26 Uncaught TypeError: Cannot read property '0' of undefined at recalc (question.js:26) recalc @ question.js:26 setTimeout (async) refresh @ question.js:34 recalc @ question.js:30 (anonymous) @ question.js:3
該当のソースコード
JavaScript
1 2function countdown(due) { 3 const now = new Date(); 4 const rest = due.getTime() - now.getTime(); 5 const sec = Math.floor(rest / 1000) % 60; 6 const min = Math.floor(rest / 1000 / 60) % 60; 7 const hours = Math.floor(rest / 1000 / 60 / 60) % 24; 8 const days = Math.floor(rest / 1000 / 60 / 60 / 24); 9 function plusZero(value) { 10 let zero = ''; 11 if(value < 10) { 12 zero = `0${value}`; 13 } else { 14 zero = value; 15 } 16 return zero; 17 } 18 const count = [days, plusZero(hours), plusZero(min), plusZero(sec)]; 19 return count; 20} 21 22let osakaGoal = new Date(2025, 4, 13, 0, 0, 0); 23 24let osakaCounter = countdown(osakaGoal); 25 26function recalc(counter, getid) { 27 const timer = `${counter[0]}日 ${counter[1]}時間 ${counter[2]}分 ${counter[3]}秒`; 28 console.log(timer); 29 document.getElementById(getid).textContent = timer; 30 31 refresh(); 32} 33 34function refresh() { 35 setTimeout(recalc, 1000); 36} 37 38const osakaId = 'countdownOsaka'; 39recalc(osakaCounter, osakaId);
試したこと
34行目のconsole.logでは時間の計算ができていました。
補足情報(FW/ツールのバージョンなど)
最新のものを使用しております。