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

能否在JavaScript的querySelector中通过变量拼接遍历name为questionN的单选按钮

问题原因及解决方法

你的动态拼接选择器的思路是合法的,运行报错是两个错误导致的:

  • 序号偏移错误:循环变量i初始值为1,你在插值时额外加了1,实际匹配的name是question2到question6,如果你的单选按钮组只到question5,最后一次查询会匹配不到元素返回null,调用null.value就会抛出错误。
  • HTML实体误用:你在模板字符串里写的"是HTML场景下的引号转义实体,JS字符串不需要这种转义写法,直接用普通双引号/单引号包裹name属性值即可。

修正后的代码示例

// 定义数组存储所有题目的选中值
const selectedAnswers = []
for (let i = 1; i <= 5; i++) {
  // 先获取匹配的元素,不要直接取值
  const checkedRadio = document.querySelector(`input[name="question${i}"]:checked`)
  // 做空值判断,避免用户未选当前题时报错
  if (checkedRadio) {
    selectedAnswers.push(checkedRadio.value)
  } else {
    // 可自定义未选题的处理逻辑
    selectedAnswers.push(undefined)
  }
}
// 最终输出所有题的选中值
console.log(selectedAnswers)

优化建议

如果不想硬编码循环上限,可以先获取所有前缀为question的单选按钮组,自动计算需要遍历的题目数量,适配不同长度的表单。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:36:04