2014-11-03 2 views
-1

Когда пользователь нажимает кнопку, он проверяет, была ли отмечена какая-либо радиокнопка (checkChoices()), и если да, то она будет сравнивать значение проверенного переключателя с correctAnswer.Функция не увеличивает эту переменную

Проблема с функцией keepScore(), потому что score остается 0 для любого ответа.

var score = 0; 
var checkChoices = function(){ 
    for (var i = 0; i < choices.length; i++) { 
     if (choices[i].checked) { 
      var value = choices[i].value; 
      choices[i].checked = false; 
     } 
    } 
    return value; 
}; 

//the keepScore function doesn't increment 
var keepScore = function(){ 
    if(checkChoices() == allQuestions[y].correctAnswer) { 
     score++; 
    } 
}; 

var behavior = function(){ 
    if(y<allQuestions.length-1 && checkChoices()) { 
     keepScore(); 
     y++; 
    } 
}; 

nextBtn.onclick = function(){ 
    behavior(); 
}; 
+0

Вы уверены, что используете функцию 'keepScore()'? На вашей кнопке вы должны использовать кнопку «type =» «'. –

+0

Вы прочитали код? Я вызвал его в функции 'behavior()'. Да, я использовал 'type = 'button'', но это не изменит, потому что не находится в форме. – GSG

+0

Что такое '' '' поведение'? – georg

ответ

0

Вам необходимо объявить значение var в начале функции. Ваша функция всегда будет возвращать undefined иначе, поскольку var должен находиться в пределах области действия оператора return.

+0

Почему? Переменная 'score' является глобальной, поэтому не нужно обращаться к ней внутри функции. – GSG

+0

Переменная с именем «значение». – Aviator

+0

'var checkChoices = function() {var value; // здесь, чтобы объявить for (var i = 0; i Aviator

Смежные вопросы