Я делаю викторину с несколькими вариантами ответов. Когда я удаляю прослушиватель событий, я не могу заменить его новым прослушивателем событий.
Смотрите мой код ниже ...
choiceC.removeEventListener('click', firstQuestion());
choiceC.addEventListener('click', function (event) {
question.appendChild(feedback);
});
choiceB.removeEventListener('click', firstQuestion());
// Correct Answer
choiceB.addEventListener('click', function (event) {
thirdQuestion();
});
SelectionC был предыдущим правильным выбором, который перемещает пользователя к следующему вопросу. Я хочу заменить этот прослушиватель событий обратной связью о том, что выбор пользователя неверен. выбор B — новый правильный ответ. Я хочу удалить прослушиватель событий, который ранее уведомлял о том, что выбор пользователя был неправильным, и заменить его функцией, которая переходит к следующему вопросу.
Полные файлы HTML, CSS и JavaScript см. в моем репозитории GitHub: https://github.com/billyhao12/ Код-викторина
Заранее спасибо всем, кто помогает.
1 ответ
Вы должны сохранить ссылку на функцию, поэтому:
choiceC.addEventListener('click', firstQuestion);
choiceC.removeEventListener('click', firstQuestion);
// your new function replacing the firstQuestion func
choiceC.addEventListener('click', function (event) {
question.appendChild(feedback);
});
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
addEventListener()
иremoveEventListener()
, требуют передачи функции reference. Похоже, вы вызываетеfirstQuestion()
inline и передаете возвращенный результат вremoveEventListener()
. Вероятно, вам следует ссылаться наfirstQuestion
, а не наfirstQuestion()
.