我使用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);
}
答案 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]);
。