循环单选按钮

时间:2019-08-30 10:40:59

标签: javascript html

我有一个包含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>

3 个答案:

答案 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++;
}
相关问题