radio按钮必须同name值成组才具单选功能,否则无法互斥选中;需配label提升可访问性,用:checked选择器获取当前选中值,checked仅控制默认状态而非双向绑定。

radio 按钮必须成组才有效
单独放一个 <input type="radio"> 没有意义——它永远无法被“选中”,因为浏览器要求同名的 radio 才算一组,只有同一 name 值下的多个选项才能互斥。没设 name,或者每个 radio 的 name 都不同,就等于各自为政,点哪个都只是“自己勾上又取消”,看起来像没反应。
实操建议:
- 所有属于同一逻辑选项的 radio 必须共享相同的
name属性值,比如name="gender" -
value值要各不相同,提交时后端靠这个区分选了哪一项 - 给每个 radio 配一个
<label></label>,并用for指向其id,或把 radio 包在<label></label>里——否则用户只能点那个小圆圈,体验极差
checked 属性只控制默认选中,不绑定状态
checked 是一个布尔属性,写上就表示页面加载时默认选中该项;但它不是双向绑定,JS 修改 input.checked = false 能取消,但用户点击其他同组 radio 后,它会自动变成 false,你不用手动清空别的项。
常见错误现象:
- 写了多个
checked—— 浏览器只认最后一个,其余无效 - 用 JS 动态设置
checked = true却没清掉同组其他项 —— 实际仍能多选(因为没清),但不符合单选语义 - 以为
checked是响应式数据,修改它就能触发 Vue/React 更新 —— 不会,它只是初始状态标记
获取 radio 选中值不能直接查 DOM 元素的 value
一组 radio 中只有一个被选中,但 DOM 里有多个 <input type="radio"> 元素。直接对某个元素取 .value 拿到的是它的固定值,不是当前选中的那个。
从零开始创建惊艳、动画丰富且自包含的 HTML 演示文稿,或通过转换 PowerPoint 文件生成。当用户希望制作幻灯片、构建演示文稿、打造路演资料(pitch deck)、将 PPT/PPTX 转换为网页格式,或增强现有 HTML 演示文稿时,应使用此能力。该能力帮助用户通过视觉预览而非抽象选项来发掘自身审美偏好。
正确做法是先定位到这一组,再找其中被选中的那个:
- 原生 JS:
document.querySelector('input[name="theme"]:checked')?.value - jQuery:
$('input[name="theme"]:checked').val() - 如果没选中,上述选择器返回
null或空集合,记得判空
别用 document.getElementsByName("theme")[0].value —— 这永远取第一个,和是否选中无关。
无障碍与语义问题常被忽略
screen reader 用户依赖 name 和 label 理解选项含义。只靠视觉排列(比如旁边写个“男”)是不够的。
必须做到:
- 每个 radio 都有明确、唯一的
id - 对应
<label for="xxx"></label>包含可读文本 - 整组 radio 最好包在
<fieldset></fieldset>里,并用<legend></legend>说明这组用途,比如“请选择您的订阅频率”
少了这些,键盘用户 Tab 切换时可能不知道当前聚焦的是什么,或者听到一堆“未选中 单选按钮”却不知代表什么含义。

















