Javascript 使用同名单选按钮的在线测验

Javascript 使用同名单选按钮的在线测验,javascript,html,radio-button,Javascript,Html,Radio Button,我正在用Js做一个简单的测试,问题是我的内部循环(即I)没有按预期工作 我回答了3个问题,每个问题有3个选项,每个问题的选项都有相同的名称。第一个问题的所有选项都有name='cap',第二个问题的选项是name='an',第三个问题是name='lang' 我的js功能如下: function my(){ var count=0; var totalQuestions = 3; var correctAnswers = 0; var alertText; var n=["

我正在用Js做一个简单的测试,问题是我的内部循环(即
I
)没有按预期工作

我回答了3个问题,每个问题有3个选项,每个问题的选项都有相同的名称。第一个问题的所有选项都有
name='cap'
,第二个问题的选项是
name='an'
,第三个问题是
name='lang'

我的js功能如下:

function my(){
  var count=0; 
  var totalQuestions = 3;
  var correctAnswers = 0;
  var alertText;
  var n=["cap","an","lang"];
  var j,i;
  for(j=0; j<n.length; ++j){
    var x = document.getElementsByName('n[j]');
    for(i = 0; i < x.length; ++i){
      if (x[i].checked){
        if (x[i].value == 'true'){
          count=count+10;
          correctAnswers++;
          break;
        }
      }
    }
  }
  if(correctAnswers == totalQuestions){
    alertText = "Congratulations! You got all the questions right!";
  }
  else {
    alertText = "You got " + correctAnswers + " correct answers and score is " + count;
  }
  alert(alertText);
}
函数my(){
var计数=0;
var=3;
var=0;
var文本;
变量n=[“cap”、“an”、“lang”];
var j,i;
对于(j=0;j替换线

var x = document.getElementsByName('n[j]');

这是一个问题,因为对于js
getElementsByName('n[y'))
意味着“获取名为
n[y]
的元素”,而不是包含需要选择的元素名称的列表项
n


祝你好运!

var x=document.getElementsByName('n[j');

应该是


var x=document.getElementsByName(n[j])

getElementsByName
返回与名称匹配的所有元素

问题是您硬编码了字符串
'n[j]'
,因此它会查找名称为
'n[j]'
的所有元素

实际上,您希望在索引
j
处从数组
n
中查找名称,因此删除引号将实际计算表达式
n[j]
更改代码

var x = document.getElementsByName('n[j]');


您现有的代码试图找到一个具有
name='n[j]'
ie:string的元素。但是您想要的是计算表达式
得到名称等于计算值的元素

谢谢。请告诉我行:for(i=0;ivar x = document.getElementsByName('n[j]');
var x = document.getElementsByName(n[j]);