如何同时通过ID和Value获取元素并禁用指定单选按钮?
解决通过ID和Value禁用单选按钮的问题
嘿,我来帮你搞定这个问题~首先得指出一个关键问题:你这段HTML里的三个单选按钮用了同一个ID selectedAnswerIDforQ15,但HTML规范里ID必须是页面唯一的,所以document.getElementById只会返回第一个匹配的元素,这就是你没法选中其他按钮的核心原因。
下面给你几个可行的解决方案:
方法1:通过name属性批量筛选并禁用
因为这些单选按钮的name属性是相同的,我们可以先获取所有同name的按钮,再遍历判断value来禁用:
// 获取所有name为selectedAnswerIDforQ15的单选按钮 const radioButtons = document.querySelectorAll('input[name="selectedAnswerIDforQ15"]'); // 遍历每个按钮,判断value后禁用(这里78、79、80都禁用) radioButtons.forEach(button => { const value = parseInt(button.value); if ([78, 79, 80].includes(value)) { button.disabled = true; } });
方法2:用属性选择器精准匹配单个/多个按钮
如果你想精准定位某个value的按钮,可以直接用复合属性选择器:
// 单独禁用value为78的按钮 document.querySelector('input[name="selectedAnswerIDforQ15"][value="78"]').disabled = true; // 一次性禁用多个指定value的按钮 document.querySelectorAll( 'input[name="selectedAnswerIDforQ15"][value="78"],' + 'input[name="selectedAnswerIDforQ15"][value="79"],' + 'input[name="selectedAnswerIDforQ15"][value="80"]' ).forEach(btn => btn.disabled = true);
额外建议:修正HTML的ID不规范问题
虽然上面的方法能解决需求,但还是建议你修正HTML,给每个单选按钮设置唯一ID(这才是符合规范的写法),比如:
<input id="selectedAnswerIDforQ15_78" name="selectedAnswerIDforQ15" type="radio" value="78" /> <input id="selectedAnswerIDforQ15_79" name="selectedAnswerIDforQ15" type="radio" value="79" /> <input id="selectedAnswerIDforQ15_80" name="selectedAnswerIDforQ15" type="radio" value="80" />
之后你就可以直接通过唯一ID精准禁用按钮了:
document.getElementById('selectedAnswerIDforQ15_78').disabled = true;
内容的提问来源于stack exchange,提问作者Agnes
相关产品推荐
相关产品推荐

