我正在使用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);
}

最佳答案

更换线

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


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

这是有问题的,因为对于js,getElementsByName('n[y]')的意思是“获取名称为n[y]的元素”,而不是列表n的项目,其中包含需要选择的元素名称。

祝你好运!

09-25 17:03
查看更多