循环单选按钮

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


三国纷争
浏览 216回答 3
3回答

小怪兽爱吃肉

尽量不要使用 for 循环,而是使用高阶函数,如 map、filter 等。在这种情况下,将 for 循环替换为:var rasa = 0var rasb = 0form1.map((element, index) => {&nbsp; &nbsp; if(element.checked)&nbsp; &nbsp; &nbsp; &nbsp; rasa++})form2.map((element, index) => {&nbsp; &nbsp; if(element.checked)&nbsp; &nbsp; &nbsp; &nbsp; rasb++})另一件事,在每个 for 循环中,您都在重新声明 rasa 和 rasb 而您不需要这样做。另外<form method="POST">的属性应该是小写。

狐的传说

在<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&nbsp;这里的名字是性别首先像这样改变你的名字属性Question 1<input TYPE="radio" NAME="j1" VALUE="1">A1<input TYPE="radio" NAME="j1" VALUE="0">A2并检查长度使用这个$(':radio[name="j1"]:checked).length;

慕工程0101907

你可以做类似的事情radios = document.getElementByTagName('input');a = 0b = 0for(let i = 0; i < radios.length; i++){&nbsp; if(radios[i].name.contains('i')&nbsp; &nbsp; a++;&nbsp; else&nbsp; &nbsp; b++;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript