0

我有一个包含 36 个问题的表格,每个问题都有 2 个无线电输入来回答。输入命名为 i1-i36 和 j1-j36。我试图将检查过的无线电计入名为 i 的变量中,而在另一个 var 中则计入名为 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>
4

3 回答 3

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++;
}
于 2019-08-30T10:52:41.363 回答
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;
于 2019-08-30T10:47:14.523 回答
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">,该属性应为小写。

于 2019-08-30T10:51:08.453 回答