以下はタイピングゲームのJSですが、エラーが発生してしまいます。
どう直せばよいかおしえてください。
なお、teratail内に似た質問があったのですが、
game.js:22 Uncaught TypeError: Cannot read property '0' of undefinedとあり、私の質問するコード、
game.js:22 Uncaught TypeError: Cannot read property 'btn' of undefinedとは異なっていました。
OとBtnの違いなのでBtnについて教えていただければわかるかもしれません。
Cannot set property 'textContent' of nullエラーに関して
Uncaught TypeError: Cannot read property '0' of undefinedエラーに関して
エラー
Uncaught TypeError: Cannot set property 'textContent' of null
→エラーは timer.textContent = '制限時間:' + -TIME- + '秒'; にあるようです。
game.js:22 Uncaught TypeError: Cannot read property 'btn' of undefined
→エラーは const countdown = setInterval(function() { にあるようです。
javascript
1const subject = document.getElementById('subject'); 2const timer = document.getElementById('timer'); 3const form = document.forms.typing; 4const textList = [ 5 'Hello World', 6 'Good', 7 'I love JavaScript', 8 'This is MyApp', 9 'Welcome' 10]; 11 12let TIME = 20; 13let count = 0; 14let state = true; 15 16const countdown = setInterval(function() { 17 timer.textContent = '制限時間:' + -TIME- + '秒'; 18 if(TIME <= 0) finish(); 19}, 1000); 20 21 22form.btn.addEventListener('click', function(e) { 23 if(!state) return; 24 25 if(form.input.value === subject.textContent) { 26 count++; 27 init(); 28 } else { 29 subject.textContent = '間違いです!'; 30 setTimeout(function(){ init() },1000) 31 } 32}); 33 34init(); 35 36function init() { 37 const rnd = Math.floor(Math.random() * textList.length); 38 39 subject.textContent = textList[rnd]; 40 form.input.value = ''; 41 form.input.focus(); 42} 43 44function finish() { 45 clearInterval(countdown); 46 subject.textContent = '正解数は' + count + '個でした!'; 47 state = false; 48}
回答2件
あなたの回答
tips
プレビュー