2015-02-11 67 views
0

我在做一个测验,显示你有多少正确的问题。我设法让它与第一个问题一起工作,但我努力想弄清楚如何遍历数组中的所有其他问题。Javascript - 通过数组索引循环出现的问题

这里是我的JS代码:

var questionArray = new Array (8); 
questionArray [0] = "q1" 
questionArray [1] = "q2" 
questionArray [2] = "q3" 
questionArray [3] = "q4" 
questionArray [4] = "q5" 
questionArray [5] = "q6" 
questionArray [6] = "q7" 
questionArray [7] = "q8" 



var correctAnswers = 0; 

function checkQuestions() 
{ 
    var questions = document.getElementsByName(questionArray[0]); 
    var numberOfRadios = questions.length; 

    for(var i = 0; i < numberOfRadios; i++) 
    { 
     if(questions[i].checked) 
     { 
      if(questions[i].value == "correct") 
      { 
       correctAnswers++ 
      } 
     }  
    } 
document.getElementById("correctAnswers").innerHTML = "You got:" + "<br>" + correctAnswers + "/8!!"; 
} 
+0

请使用数组文本更容易,并具有更好的性能。 'var questionsArray = [“q1”,“q2”,“q3”]'等等 – 2015-02-12 20:10:42

回答

0

questionArray[0]返回 “Q1”。

如果你有名字的只有一个元素,那么questions.length将等于1

因此,您for循环将只重复一次。

你想要做什么,是这样的:

function checkQuestions() 
{ 
    for(var i = 0; i < questionArray.length; i++) 
    { 
     //I assume you have only one question per name, if not then you need id 
     var question = document.getElementsByName(questionArray[i])[0]; 
     if(question.checked) 
     { 
      if(question.value == "correct") 
      { 
       correctAnswers++; 
      } 
     }  
    } 
    document.getElementById("correctAnswers").innerHTML = "You got:" + "<br>" + correctAnswers + "/8!!"; 
} 
+1

我想他所说的问题是一组输入广播(回答),每个问题都有相同的名称 – nanndoj 2015-02-11 21:00:35

0

遍历问题以及..

function checkQuestions() 
{ 
    for (var j = 0; j < questionArray.length; j++) 
     var questions = document.getElementsByName(questionArray[j]); 
     ... 
    } 

document.getElementById("correctAnswers").innerHTML = "You got:" + "<br>" + correctAnswers + "/8!!"; 
}