I am building a trivia webapp using an API and i want to add an event listener to the button with the correct answer so that when the user clicks it it will display a message saying they’re right and it’ll get a new question. Here’s how the code looks:
JavaScript
x
28
28
1
function useApiData(triviaObj) {
2
let answers = sortArrayRandomly([
3
triviaObj.results[0].correct_answer,
4
triviaObj.results[0].incorrect_answers[0],
5
triviaObj.results[0].incorrect_answers[1],
6
triviaObj.results[0].incorrect_answers[2],
7
]);
8
9
document.querySelector("#category").innerHTML = `Category: ${triviaObj.results[0].category}`;
10
document.querySelector("#difficulty").innerHTML = `Difficulty: ${triviaObj.results[0].difficulty}`;
11
document.querySelector("#question").innerHTML = `Question: ${triviaObj.results[0].question}`;
12
13
document.querySelector("#answer1").innerHTML = `${answers[0]}`;
14
document.querySelector("#answer2").innerHTML = `${answers[1]}`;
15
document.querySelector("#answer3").innerHTML = `${answers[2]}`;
16
document.querySelector("#answer4").innerHTML = `${answers[3]}`;
17
18
let rightAnswer = triviaObj.results[0].correct_answer;
19
rightAnswer.addEventListener("click", correctAnswer);
20
21
console.log(answers);
22
}
23
24
function correctAnswer() {
25
alert("correct");
26
getTrivia();
27
}
28
It tells me that the AddEventListener is not a function, how can I fix this?
Advertisement
Answer
Use a loop to fill in the answer elements. In that loop you can check if the current answer is the correct answer and add the event listener.
JavaScript
1
9
1
answers.forEach((answer, i) => {
2
let button = document.querySelector(`#answer${i+1}`);
3
button.innerHTML = answer;
4
if (answer == triviaObj.results[0].correct_answer) {
5
button.addEventListener("click", correctAnswer);
6
} else {
7
button.removeEventListener("click", correctAnswer);
8
}
9
});