前提
解決したいこと
入力した数字をカウントダウンタイマーでカウントしたいと思っています。
任意の数字を入力して、それをHTMLの「00:00」(id = timedisplay)部分に表示させ、STARTボタンを押したらそこからカウントダウンが始まるようにしたいです。
今は0秒カウントで、すぐに「TIME UP」とされてしまいます。
javascriptの1行目で「let baseCount = 0000;」を書いているせいだとは思うのですが、ここをどうやったら任意の数字に変えられて、カウントダウンが始まる(数字の1を4回押したら11:11と認識し、そこから11分11秒がカウントダウンされる)ように設定できるのでしょうか?
ご助言いただければと思います。
冗長なコードなので見にくいかと思いますがご了承下さい。
繰り返しになっている部分(数字の3を入力したら反映するところ以降)は割愛しております。
該当のソースコード
html,javascript
1ソースコード 2```HTML 3<!DOCTYPE html> 4<html> 5 <head> 6 <title>タイマー</title> 7 <meta name="description" content="タイマーアプリ"> 8 <meta charset="utf-8"> 9 <body> 10 <h1><span id="timedisplay">00:00</span></h1> 11 <script src="./timer.js"></script> 12 <form> 13 <input type="button" id="number1" value="1" onclick="btnOneClick();"> 14 <input type="button" id="number2" value="2" onclick="btnTwoClick();"> 15 <input type="button" id="number3" value="3" onclick="btnThreeClick();"><br> 16 <input type="button" id="number4" value="4" onclick="btnFourClick();"> 17 <input type="button" id="number5" value="5" onclick="btnFiveClick();"> 18 <input type="button" id="number6" value="6" onclick="btnSixClick();"><br> 19 <input type="button" id="number7" value="7" onclick="btnSevenClick();"> 20 <input type="button" id="number8" value="8" onclick="btnEightClick();"> 21 <input type="button" id="number9" value="9" onclick="btnNineClick();"><br> 22 <input type="button" id="number0" value="0" onclick="btnZeroClick();"><br> 23 <input type="button" id="startBtn" value="START"> 24 <input type="button" id="stopBtn" value="STOP"> 25 <input type="button" id="resetBtn" value="RESET"> 26 </form> 27 </body> 28 </head> 29 </html> 30 31 32 ```javascript 33let baseCount = 0000; 34let min = 0; 35let sec = 0; 36let timerId = null; 37 38// 1秒ごとにcount_down関数呼び出す 39function count_start(){ 40 baseCount = 5; 41 console.log(baseCount); 42 min = parseInt(baseCount/60); 43 sec = baseCount % 60; 44 let timedisplay = document.getElementById('timedisplay'); 45 timedisplay.innerText = ('0' + min).slice(-2) + ':' + ('0' + sec).slice(-2) 46 timerId = setInterval(count_down,1000); 47} 48// カウントダウン表示 49function count_down(){ 50 if(baseCount ===0){ 51 let display = document.getElementById('timedisplay'); 52 display.innerText = 'TIME UP'; 53 }else { 54 baseCount--; 55 min = parseInt(baseCount/60); 56 sec = baseCount % 60; 57 let count_down = document.getElementById('timedisplay'); 58 count_down.innerText = ('0' + min).slice(-2) + ':' + ('0' + sec).slice(-2) 59 } 60 } 61 62// ストップボタンクリック時のアクション 63function count_stop(){ 64 clearInterval(timerId); 65} 66// リセットボタンクリック時のアクション 67function count_reset(){ 68 baseCount = 0000; 69 min = parseInt(baseCount/60); 70 sec = baseCount % 60; 71 let count_down = document.getElementById('timedisplay'); 72 count_down.innerText = ('0' + min).slice(-2) + ':' + ('0' + sec).slice(-2) 73} 74// イベント処理を実行 75window.addEventListener('DOMContentLoaded', function(){ 76 let start = document.getElementById('startBtn'); 77 let stop = document.getElementById('stopBtn'); 78 let reset = document.getElementById('resetBtn'); 79 start.addEventListener('click',count_start); 80 stop.addEventListener('click',count_stop); 81 reset.addEventListener('click',count_reset); 82}) 83// 1押した時 84function btnOneClick() { 85 target = document.getElementById('timedisplay'); 86 const base = target.innerText.replace(':',''); 87 const newDisplay = base.substr(1,3)+ '1'; 88 const a = newDisplay.slice(0,2); 89 const b = ':'; 90 const c = newDisplay.slice(2); 91 let nnDisplay = a + b + c; 92 console.log(nnDisplay); 93 document.getElementById('timedisplay').textContent = nnDisplay; 94 target.innerText = nnDisplay; 95 }; 96// 2を押した時(3以降は割愛) 97 function btnTwoClick() { 98 target = document.getElementById('timedisplay'); 99 const base = target.innerText.replace(':',''); 100 const newDisplay = base.substr(1,3)+ '2'; 101 const a = newDisplay.slice(0,2); 102 const b = ':'; 103 const c = newDisplay.slice(2); 104 let nnDisplay = a + b + c; 105 console.log(nnDisplay); 106 document.getElementById('timedisplay').textContent = nnDisplay; 107 target.innerText = nnDisplay; 108 }; 109 110### 試したこと 111現状、「//1秒ごとにcount_down関数呼び出す」のところに5秒を無理やり入れているので、5秒のカウントダウンはしてくれます。 112でも、本当は任意の数字を入力して、それでカウントダウンを発動したいです。 113 114 115### 補足情報(FW/ツールのバージョンなど) 116 117ここにより詳細な情報を記載してください。