document.queryselector 是最直接可靠的方式,用 'input[name="gender"]:checked' 可获取选中项或返回 null;若需兼容旧环境,可用 array.from(radios).some(radio => radio.checked) 判断。

document.querySelector 是最直接、最可靠的方式,只要写对选择器,就能拿到当前选中的那个 input[type="radio"] 元素;拿不到就说明没选。
用 document.querySelector 检查是否选中
核心逻辑是:在指定 name 的 radio 组里找带 :checked 伪类的元素。它天然返回第一个匹配项(或 null),不需要遍历、不依赖 jQuery。
- 如果
document.querySelector('input[name="gender"]:checked')返回一个 DOM 元素,说明已选中 - 如果返回
null,说明该组里没有任何 radio 被选中 - 注意 name 值必须完全一致,比如
name="gender"和name="Gender"是两组 - 不要用
document.getElementsByName("gender")然后试图读.value——它返回的是 NodeList,没有.value属性
用 Array.from + some 遍历判断(兼容性更强)
某些老项目禁用伪类选择器,或需要更明确的布尔语义时,可手动遍历。但注意:必须用 .checked 属性,不是 .value 或 .selected。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
const radios = document.querySelectorAll('input[name="plan"]');const hasChecked = Array.from(radios).some(radio => radio.checked);- 避免用
for (let i = 0; i 手写循环——容易漏 <code>break,也冗余 -
radios[0].checked这种写法错误:只检查第一个,不代表整组状态
为什么 form.radioName.value 总是 undefined
HTML 表单对象(如 document.forms[0])对 radio 组的访问是特殊处理的:它只暴露第一个同名 radio 元素,且不自动聚合选中状态。所以 frmMain.gender.value 实际上等价于 frmMain.gender[0].value,和是否选中无关。
- 这个行为是浏览器标准,不是 bug,但极易误导人
- 哪怕你给第二个 radio 加了
checked,frmMain.gender.value仍返回第一个的value - 唯一安全路径:绕过表单对象,直接用
querySelector或querySelectorAll
真正容易被忽略的是 name 属性的拼写一致性——前后端约定好 name 值后,前端校验时多一个空格、大小写不一致、或者服务端渲染漏传 name,都会让 :checked 查不到任何元素,最终误判为“未选择”。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










