JavaScript获取Radio值异常:点击单选框始终返回undefined
解决单选框值返回undefined的问题
你的代码存在两个核心问题导致返回undefined,下面按你的要求修改,保证未选中状态也能正常工作:
- 单选框缺少
value属性:你写的<input type="radio">没有设置value属性,即便选中,elements[i].value也无法获取到有效内容。需要给Yes、No对应的单选框分别添加value="Yes"和value="No"。 - 参数名称不匹配:
display()函数里调用getRadioValue('7yesno'),但单选框的name属性是Q7yesno,参数名称错误,要改成getRadioValue('Q7yesno')。
另外针对你要求的「未选中也能正常工作」,我们可以在遍历完所有单选框都没找到选中项时,返回明确的默认值(比如null),避免返回undefined,同时在弹窗里做对应提示。
修改后的完整代码如下:
<body> <form id="Q7" style="display:block"> <br> 7. <script type="text/javascript">document.write(Q7)</script><br> Yes <input type="radio" onclick="javascript:Q7_check();" name="Q7yesno" id="Q7_Yes" value="Yes" /> No <input type="radio" onclick="javascript:Q7_check();" name="Q7yesno" id="Q7_No" value="No" /> </form> <button onclick="display()">Display value</button> <script> function getRadioValue(theRadioGroup) { var elements = document.getElementsByName(theRadioGroup); for (var i = 0, l = elements.length; i < l; i++) { if (elements[i].checked) { return elements[i].value; } } // 未选中时返回明确值,避免undefined return null; } function display() { var x = getRadioValue('Q7yesno'); // 处理未选中的情况 var displayText = x ? `The value of the radio button is: ${x}` : "No radio button selected"; alert(displayText); } </script> </body>
修改后效果:
- 选中Yes/No时,弹窗会显示对应的选中值
- 未选中任何单选框时,弹窗会显示提示文本而非undefined
内容的提问来源于stack exchange,提问作者user12345
相关产品推荐
相关产品推荐

