Я делаю тест javascript, используя одну страницу HTML. По какой-то причине мой код будет отображать только один вопрос, и после нажатия на элемент он не перейдет к следующему вопросу. И он не начинает тест с первого вопроса.
Я использовал for
l oop внутри for
l oop. Первый l oop отображает вопрос, а другой - соответствующий выбор. Вопросы и выборы хранятся в массиве, содержащем объекты.
Я кодирую с Javascript и jQuery только несколько недель, поэтому вам придется рассказать мне в начинающих терминах. Я должен буду рефакторинг это. Я прошу прощения за то, что это было немного грязно.
Я попытался убрать команды return
. То же самое с preventDefault
, без изменений.
function renderQuiz(i) {
$heading.text("");
$mainDiv.text("");
$heading.text(quizQuestions[i].question);
for (var j = 0; j < quizQuestions[i].choices.length; j++) {
//console.log(quizQuestions[0].choices.length);
var li = document.createElement("li");
li.innerText = JSON.stringify(quizQuestions[i].choices[j]);
$mainDiv.append(li);
};
$('li').on("click", function() {
if (event.target.matches('li')) {
event.preventDefault();
var guess = event.target.innerText;
var answer = (JSON.stringify(quizQuestions[i].answer[0]));
if (guess === answer) {
timeLeft += 10;
console.log(timeLeft + "it works");
} else {
timeLeft -= 10;
console.log(timeLeft)
};
}
});
return;
};
mainPage();
$button.on("click", function(click) {
event.preventDefault();
for (var i = 0; i < quizQuestions.length; i++) {
renderQuiz(i);;
}
});