我有一个包含36个问题的表格,每个问题都有2个单选答案输入。输入名为i1-i36和j1-j36。我正在尝试将检查的无线电计数到一个名为i的变量中,并将另一个命名为j的变量中的变量计数。
尝试了一下,但是没有用:
function test_it(entry) {
if (entry.value!=null && entry.value.length!=0) {
entry.value=""+ eval(entry.value);
}
computeForm(entry.form);
}
function computeForm(form) {
var rasa=0
var rasb=0
for (var count=1; count<37; count++)
{
if (form.i[count].checked){
var rasa=rasa+1;
}
}
for (var count=1; count<37; count++)
{
if (form.j[count].checked){
var rasb=rasb+1;
}
}
document.getElementById('showa').innerHTML = rasa;
document.getElementById('showb').innerHTML = rasb;
<body>
<form METHOD=POST>
Question 1
<input TYPE="radio" NAME="i1" VALUE="1">A1
<input TYPE="radio" NAME="j1" VALUE="0">A2
[...]
Question 36
<input TYPE="radio" NAME="i36" VALUE="1">A1
<input TYPE="radio" NAME="j36" VALUE="0">A2
</form>
</body>
// I want to get these:
<span id='showa'>Result a</span>
<span id='showb'>Result b</span>
答案 0 :(得分:0)
在<input type="radio">
中,名称属性应与此类似
<input type="radio" name="gender" value="male"> Male<br>
<input type="radio" name="gender" value="female"> Female<br>
<input type="radio" name="gender" value="other"> Other
这里的名字是性别 首先像这样更改您的名称属性
Question 1
<input TYPE="radio" NAME="j1" VALUE="1">A1
<input TYPE="radio" NAME="j1" VALUE="0">A2
并使用它来检查长度
$(':radio[name="j1"]:checked).length;
答案 1 :(得分:0)
尽量不要使用for循环,而应使用诸如map,filter等的高阶函数。
在这种情况下,将for循环替换为:
var rasa = 0
var rasb = 0
form1.map((element, index) => {
if(element.checked)
rasa++
})
form2.map((element, index) => {
if(element.checked)
rasb++
})
另一件事,在每个for循环中,您都在重新声明rasa和rasb,而您不需要。同样,<form method="POST">
的属性也应为小写。
答案 2 :(得分:0)
您可以做类似
的操作radios = document.getElementByTagName('input');
a = 0
b = 0
for(let i = 0; i < radios.length; i++){
if(radios[i].name.contains('i')
a++;
else
b++;
}