具有相同名称的单选按钮的在线测验
Online quiz with radio buttons having same name
我正在使用Js进行一个简单的测验,问题是我的内部循环(即i
)没有按预期工作。
有 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
的项目,其中包含您需要选择的元素名称。
祝你好运!
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]');
自
var x = document.getElementsByName(n[j]);
您现有的代码尝试查找具有name='n[j]'
的元素,即:字符串。但是你想要的是计算表达式get the element with the name equal to evaluated value
.
相关文章:
- 多个单选按钮组相互干扰
- 是否可以禁用jquery中的单个单选按钮
- Javascript:无法获取变量中的单选按钮值
- 通过ajax到php文件获取单选按钮值
- 互斥单选按钮和相应的输入字段
- 用于选择MVC3中单选按钮值的JavaScript
- 如何获取单选按钮的多个实例的选定单选按钮值
- react testUtils模拟点击单选按钮而不触发onchange
- 当选择组中的单选按钮时,jQuery addClass
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 客户端单选按钮列表验证
- Javascript:图像与单选按钮的值不匹配
- 如何在Javascript中将单选按钮值保存到cookie中
- 单击时如何更改单选按钮的CSS
- 使用按钮和单选按钮提交表单,但始终使用相同的值
- 注入Javascript以选择具有指定值的所有单选按钮
- 复选框/单选按钮-添加所选项目的总价
- 如何使用单选按钮设置cookie值
- 具有相同名称的单选按钮的在线测验
- 在线测验:通过选择不同的单选按钮将答案和问题分为3类