在线测验与具有相同名称的单选按钮

时间:2016-03-11 16:28:44

标签: 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=["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);
}

3 个答案:

答案 0 :(得分:4)

替换行

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

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

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

祝你好运!

答案 1 :(得分:2)

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

应该是

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

getElementsByName会返回符合每个docs名称的所有元素。

问题是您对字符串'n[j]'进行了硬编码,以便查找名称为'n[j]'的所有元素。

您实际上想从索引n的数组j中查找名称所以删除引号实际上会评估该表达式n[j]

答案 2 :(得分:1)

更改您的代码
AlertView.DatePicker.date = newDateEvery.picturedate!

if newDateEvery.picturedate != nil {}

您现有的代码尝试查找具有var x = document.getElementsByName('n[j]'); 的元素,即:字符串。但你想要的是评估表达式var x = document.getElementsByName(n[j]);