You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单选按钮计数求助:36题表单i/j命名单选框选中数统计失败

解决单选按钮计数失效的问题

我来帮你搞定这个计数问题,你的代码里有几个关键错误导致功能无法实现,下面是修正方案和详细解释:

问题分析

  1. 表单元素访问方式错误:你尝试用form.i[count]获取name为i1、i2的单选按钮,但表单元素是通过完整name值访问的,正确方式应该是form['i' + count]——因为每个单选按钮的name是i拼接数字,并非一个名为i的数组。
  2. 变量重复声明导致计数失效:循环中你写了var rasa=rasa+1;,这里的var会创建循环内的局部变量,完全脱离了函数开头声明的rasa变量,导致外部计数变量始终为0,必须去掉这个var。
  3. 缺少触发计算的事件:你的代码没有绑定单选按钮的点击事件,用户选择选项时不会触发计数计算,需要给每个单选按钮添加触发逻辑。

修正后的完整代码

<!DOCTYPE html>
<html>
<head>
<script>
function computeForm(form) {
  var rasa = 0;
  var rasb = 0;
  
  // 统计i开头的单选按钮选中数量
  for (var count = 1; count <= 36; count++) {
    var radio = form['i' + count];
    if (radio && radio.checked) {
      rasa += 1;
    }
  }
  
  // 统计j开头的单选按钮选中数量
  for (var count = 1; count <= 36; count++) {
    var radio = form['j' + count];
    if (radio && radio.checked) {
      rasb += 1;
    }
  }
  
  document.getElementById('showa').innerHTML = rasa;
  document.getElementById('showb').innerHTML = rasb;
}
</script>
</head>
<body>
<form method="POST">
  <!-- 示例:第1题和第36题,中间省略第2-35题 -->
  Question 1 
  <input type="radio" name="i1" value="1" onclick="computeForm(this.form)">A1 
  <input type="radio" name="j1" value="0" onclick="computeForm(this.form)">A2
  <br>
  <br>
  Question 36 
  <input type="radio" name="i36" value="1" onclick="computeForm(this.form)">A1 
  <input type="radio" name="j36" value="0" onclick="computeForm(this.form)">A2
</form>

<p>Result a: <span id='showa'>0</span></p>
<p>Result b: <span id='showb'>0</span></p>
</body>
</html>

额外优化说明

  • 去掉了多余的test_it函数,我们只需要判断单选按钮是否选中,不需要用eval处理值。
  • 增加了radio && radio.checked的判断,避免因元素缺失导致报错。
  • 给每个单选按钮添加了onclick="computeForm(this.form)",用户每次选择选项时都会实时更新计数。

内容的提问来源于stack exchange,提问作者Gabriel Gheorghe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:15:16