0

Я пытаюсь создать викторину в предисловии в Javascript в качестве своего первого упражнения «с нуля». Это мой fiddle, который имеет все остальные коды.Не могу получить счетчик работы внутри функции в Javascript

Это мой вопрос:

var allQuestions = [{ 
    "question": "Who was Luke's gunner in the battle at Hoth?", 
    "choices": ["Dak", "Biggs", "Wedge", "fx-7"], 
    "correctAnswer": 0 
}]; 

Вот в этой функции, я включил в цикле, который должен пройти через радиокнопки против выбора пользователей. Смотри ниже.

function answerFwd() { 
    var answerOutput = " "; 
    var itemAnswers = allQuestions; 
    var answer = 0; 
    var playerTally = 0; 
    var playerFeedback = ""; 
    var playerMessage = document.getElementById("playerMessage"); 

Сейчас я застрял в этом; Соответствие правильного ответа в массиве, с тем, что пользователь будет выбирать в переключателях, а затем динамически отображать счет.

Прямо сейчас, я могу получить 0 для отображения, но без приращения.

var radioValue = $("input[type='radio'].radioButtons:checked").val(); 

    if (currentAnswer <= itemAnswers.length) { 
     currentAnswer++; 
    } 
    createRadioButtonFromArray(itemAnswers[currentQuestion].choices); 

    for(i = 0; i < radioValue.length; i++) { 
     if(radioValue[i].checked) { 
      if(radioValue[i].value == itemAnswers.correctAnswer) { 
       playerTally++; 
       break; 
      } 
     } 
    } 

    playerFeedback += "<h4>" + playerTally + "</h4> <br/>"; 
    playerMessage.innerHTML = playerFeedback; 
} 

Я не против того, чтобы решения с JQuery, но предпочел бы JS альтернативу ванили, только так я могу видеть, что происходит!

Спасибо вам заранее!

+0

У вас есть itemAnswers.correctAnswer, но я beli вам нужно allQuestions [i] .correctAnswer - и вы уже используете jQuery, который не имеет отношения к вашей реальной проблеме, насколько я могу видеть. – mplungjan

+0

@ mplungjan Спасибо, что ответили, но это не сработало. Я получаю ноль для распространения, но он не увеличивается ... –

+0

Я вижу, что вы копируете itemAnswers, но вам все еще нужен itemAnswers [i] - во всяком случае, создайте скрипку, которая показывает полную проблему. – mplungjan

ответ

0

Перед тем, как перейти к следующему вопросу, вы можете выяснить, если ответ является правильным с

if (document.querySelectorAll("#responses input")[allQuestions[currentQuestion].correctAnswer].checked) 
+0

Благодарю г-на Меня! Эй, я обновил свою скрипку здесь https://jsfiddle.net/718BkQns/qLowcqe8/3/, но, похоже, не работает! Я что-то упускаю? –

+0

На самом деле это правильно, но трудно читать и не показывать в контексте. – mplungjan

+1

Я спешил уйти, когда написал этот код, так что это уродливый лайнер. Используйте версию mplungjan. Это красивее. –

0

Полное решение

fiddle

var radios = document.querySelectorAll("#responses input"); 
var correct = allQuestions[currentAnswer].correctAnswer; 

if (radios[correct].checked) { 
    playerTally++; 
    playerFeedback += "<h5>" + playerTally + "</h5> <br/>"; 
    playerMessage.innerHTML = playerFeedback; 
} 


if (currentAnswer <= itemAnswers.length) { 
    currentAnswer++; 
} 

А теперь присмотритесь это то же самое, что и у мистера Ме

+0

Хмм, код в фрагменте выше не работает. Эй, не могли бы вы переправить скрипку? Прямо сейчас это привязка к какой-то форме, а не к моей викторине ... Спасибо –

+0

Обновленный ответ. Это не полно, так как вам действительно нужно работать на спине или удалять стрелку назад – mplungjan

+0

Спасибо, но скрипка не работает. Или я должен сказать, что код не продвигает меня дальше того, что у меня уже было. Но я очень оценил вашу помощь! –