お世話になっております。
確かに、今回は以下の関数で forEach
の中でaddEventListener
が指定されており、
解釈が難しいです。
function setQuiz(){
isAnswered = false;
question.textContent = quizSet[currentNum].q;
const shuffledChoices = shuffle([...quizSet[currentNum].c]);
shuffledChoices.forEach((choice)=>{
const li = document.createElement('li');
li.textContent = choice;
li.addEventListener('click',() => {
checkAnswer(li);
});
choices.appendChild(li);
});
}
これは、最終行の setQuiz();
が実行された時点では、li.addEventListener
では
checkAnswer(li);
という関数が指定されただけと考えて良いのでしょうか?
そして、最初のクリックが起きた時点で実行される checkAnswer(li);
で
isAnswered
という変数が false
に変化する。
二度目のクリックでも checkAnswer(li);
は実行されるけど、以下の21行目の
isAnswered = true;
以降は実行されない。このような解釈で良いでしょうか?
function checkAnswer(li){
if(isAnswered){
return;
}
isAnswered = true;
if(li.textContent === quizSet[currentNum].c[0]){
li.classList.add('correct');
}else {
li.classList.add('wrong');
}
}
この回答を見るにはプレミアムプランへの登録が必要です
プレミアムプランとは?