JavaScript中无法将DOM元素值赋值给变量,报undefined错误求助
嘿,我来帮你搞定这个undefined的问题,主要是两个地方出了错:
1. HTML表单里的语法错误
你写的单选按钮标签里,name属性的格式不对:
<!-- 错误写法 --> <input type="radio" name"w1" value = 'a' id="wla">
这里name"w1"少了一个等号,应该改成name="w1",浏览器才能正确识别这个表单控件的名称,JS里才能通过document.forms["someForm"]["w1"]找到它。
2. JavaScript写法2的语法错误
写法2里var w1 = 'some'后面没有加分号,而且这行完全没必要——你后面直接覆盖了w1的值,还容易触发语法错误。
修正后的完整代码
先把HTML改对,记得还要加提交按钮(不然没法触发onsubmit):
<form name="someForm" onsubmit="return submitAnswers()"> <input type="radio" name="w1" value='a' id="wla">a. <input type="radio" name="w1" value='b' id="w1b">b. <button type="submit">提交答案</button> </form>
然后是修正后的JS代码,另外要注意:单选按钮只有被选中时,value才会有值,如果没选中,直接取value会得到undefined,所以最好先判断是否有选中项:
function submitAnswers() { // 获取所有name为w1的单选按钮 const w1Options = document.forms["someForm"]["w1"]; let selectedAnswer; // 遍历找到选中的那个 for (const option of w1Options) { if (option.checked) { selectedAnswer = option.value; break; } } if (selectedAnswer) { console.log('你选中的答案是:', selectedAnswer); // 这里可以写提交逻辑 } else { alert('请先选择一个选项哦!'); } return false; // 阻止表单默认提交,方便测试,正式场景按需修改 }
这样应该就能正常获取到单选按钮的值啦~
内容的提问来源于stack exchange,提问作者ozavala
相关产品推荐
相关产品推荐

