我想从一组单选按钮中获得选定的值。

这是我的HTML:

<div id="rates">
  <input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate
  <input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate
  <input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate  
</div>

这是我的js:

var rates = document.getElementById('rates').value;
var rate_value;
if(rates =='Fixed Rate'){
    rate_value = document.getElementById('r1').value;
    
}else if(rates =='Variable Rate'){
    rate_value = document.getElementById('r2').value;
    
}else if(rates =='Multi Rate'){
    rate_value = document.getElementById('r3').value;
}  

document.getElementById('results').innerHTML = rate_value;

我一直没有定义。


当前回答

只需使用:document.querySelector('input[rate][checked]').value

其他回答

如果按钮在窗体中 var myform = new FormData(getformbywhatever); myform.get(“率”); 上面的QuerySelector是一个更好的解决方案。然而,这种方法很容易理解,特别是如果你对CSS没有任何了解的话。另外,输入字段很可能是在一个表单中。 没有检查,还有其他类似的解决方案,抱歉重复了

如果你正在使用jQuery:

$('input[name=“rate”]:checked').val();

你可以使用.find()来选择选中的元素:

var radio = Array.from(document.querySelectorAll('#rate input'))

var value = radio.length && radio.find(r => r.checked).value

我对这个问题的纯javascript是找到检查节点,找到它的值,并弹出它从数组。

var Anodes = document.getElementsByName('A'),
    AValue = Array.from(Anodes)
       .filter(node => node.checked)
       .map(node => node.value)
       .pop();
console.log(AValue);

注意,我使用的是箭头函数。 看看这把小提琴的工作例子。

对前面建议功能的改进:

function getRadioValue(groupName) {
    var _result;
    try {
        var o_radio_group = document.getElementsByName(groupName);
        for (var a = 0; a < o_radio_group.length; a++) {
            if (o_radio_group[a].checked) {
                _result = o_radio_group[a].value;
                break;
            }
        }
    } catch (e) { }
    return _result;
}