如何用同一JS常量获取单选框或下拉框的estimateType字段值?
兼容单选框与下拉框的取值方案
给你两种能用同一const声明搞定的写法,完美适配你的表单场景:
1. 简洁的复合选择器写法
直接用CSS复合选择器同时匹配选中的单选按钮和下拉框,一步取值:
const estimateType = document.querySelector('input[name=estimateType]:checked, select[name=estimateType]').value;
原理:
- 新增条目时,页面存在单选按钮,选择器会优先匹配到
checked状态的单选框,取其value; - 编辑条目时,单选按钮不存在,选择器会匹配到下拉框元素,而下拉框的
value属性本身就是当前选中选项的值,无需额外处理。
2. 更稳妥的遍历判断写法
如果担心极端场景(比如元素未加载完成、无默认选中值),可以用遍历判断元素类型的方式取值,避免报错:
const estimateType = Array.from(document.getElementsByName('estimateType')) .find(el => (el.type === 'radio' && el.checked) || el.tagName === 'SELECT') ?.value || '';
原理:
- 先获取所有
name为estimateType的元素,转成数组后筛选目标元素:要么是选中的单选按钮,要么是下拉框; - 用可选链操作符
?.和默认值|| ''处理找不到元素的情况,避免抛出Cannot read properties of null错误。
内容的提问来源于stack exchange,提问作者robline
相关产品推荐
相关产品推荐

