2014-11-03 71 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 =“按钮”'。 – 2014-11-03 21:42:17

+0

您是否阅读过该代码?我在'behavior()'函数中调用了它。是的,我使用'type ='button'',但它不会有所作为,因为它不在表单中。 – GSG 2014-11-03 21:45:26

+0

“行为”中的“y”是什么? – georg 2014-11-03 21:54:25

回答

0

您需要在函数的开头声明var值。 您的函数将始终返回undefined否则,因为var至少需要位于return语句的范围内。

+0

这是为什么? 'score'变量是全局的,所以在一个函数中访问它并不是问题。 – GSG 2014-11-03 21:51:53

+0

名为“value”的变量。 – Aviator 2014-11-03 21:52:48

+0

var checkChoices = function(){var value; //这里声明for(var i = 0; i Aviator 2014-11-03 22:02:25