前提・実現したいこと
クイズ結果に正答率を表示させようと調べながらコードを書いていったのですが、以下のエラーが発生して結果画面が表示しなくなってしまいました。
(※書き足したコードの行にコメントで仮と書いています。)
よろしくお願いします。
発生している問題・エラーメッセージ
Uncaught ReferenceError: accuracy is not defined at HTMLDivElement.<anonymous>
該当のソースコード
html
1 2 3 <section class="container3"> 4 <div id="timer">00:00.00</div> <!--カウントダウンタイマーを表示--> 5 <div hidden id="correct"></div> <!-- 仮 --> 6 <div hidden id="wrong"></div> <!-- 仮 --> 7 </section> 8 9
javascript
1 2 3 4 const correct = document.getElementById('correct'); // 仮 5 const wrong = document.getElementById('wrong'); // 仮 6 7 function countDown() { 8 timerId = setTimeout (function() { 9 timeLeft = timeToCountDown - (Date.now() - startTime); 10 11 12 if(timeLeft < 0){ 13 clearTimeout(timerId); 14 timeLeft = 0; 15 16 updateTimer(timeLeft); 17 18 btn.classList.remove('disabled'); 19 btn.textContent = '結果発表'; 20 currentNum = quizSet.length - 1; 21 isAnswered = true; 22 return; 23 } 24 25 updateTimer(timeLeft); 26 countDown(); 27 showResult(); // 仮 28 }, 10); 29 } 30 31 32 function showResult(){ // 仮 33 const accuracy = correct + wrong === 0 ? 0 : correct / (correct + wrong) * 100; 34 } 35 36 btn.addEventListener('click', () => { 37 if (btn.classList.contains('disabled')) { 38 return; 39 } 40 btn.classList.add('disabled'); 41 42 if (currentNum === quizSet.length - 1) { 43 scoreLabel.innerHTML = `${quizSet.length} <br> 44 ${score}<br> 45 ${accuracy.toFixed(2)}%`; // 仮 46 result.classList.remove('hidden'); 47 } else { 48 currentNum++; 49 setQuiz(); 50 } 51 }); 52} 53
試したこと
エラー文を検索してコード間違いを探したのですが、解決することができません。
補足情報(FW/ツールのバージョンなど)
ブロック内で以下のように記述したら解決できました。
javascript
1 showResult(); // 仮 2 3 function showResult(){ // 仮 4 const accuracy = correct + wrong === 0 ? 0 : correct / (correct + wrong) * 100; 5 if (currentNum === quizSet.length - 1) { 6 scoreLabel.innerHTML = `${quizSet.length} <br> 7 ${score} <br> 8 ${accuracy.toFixed(2)}%`; //仮 9 result.classList.remove('hidden'); 10 } else { 11 currentNum++; 12 setQuiz(); 13 } 14 } 15 }); 16}
回答2件
あなたの回答
tips
プレビュー