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

如何计算两组独立单选按钮的选中值之和 解决拼接值异常问题

问题原因

单选按钮的value属性默认是字符串类型,你代码中先执行了字符串拼接再做整数转换,才会输出11、12这类拼接后的错误结果。
比如你选了q1的1分和q2的1分,代码执行顺序是:先把字符串"1"和"1"拼接得到"11",再用parseInt转成整数11,和你要的数值相加逻辑完全不符。

修复方案

你需要先把两个选中值分别转成整数,再执行加法运算,还可以简化嵌套循环的写法,提升可读性:

function displayRadioValue() {
  // 获取q1选中值,未选中默认赋值0
  const q1Checked = document.querySelector('input[name="q1"]:checked');
  const q1Val = q1Checked ? parseInt(q1Checked.value) : 0;
  // 获取q2选中值,未选中默认赋值0
  const q2Checked = document.querySelector('input[name="q2"]:checked');
  const q2Val = q2Checked ? parseInt(q2Checked.value) : 0;
  // 数值相加
  const sum = q1Val + q2Val;
  document.getElementById("result").innerHTML = "Result: " + sum;
}

如果需要兼容不支持querySelector的老旧浏览器,可以沿用你原来的循环逻辑修改:

function displayRadioValue() {
  var ele1 = document.getElementsByName('q1');
  var ele2 = document.getElementsByName('q2');
  var val1 = 0, val2 = 0, sum = 0;

  for (i = 0; i < ele1.length; i++) {
    if (ele1[i].checked) {
      val1 = parseInt(ele1[i].value);
    }
  }
  for (j = 0; j < ele2.length; j++) {
    if (ele2[j].checked) {
      val2 = parseInt(ele2[j].value);
    }
  }
  
  sum = val1 + val2;
  document.getElementById("result").innerHTML = "Result: " + sum;
}

内容的提问来源于stack exchange,提问作者Megha Pradeetha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:18:02