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

这是我的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;

我一直没有定义。


当前回答

最短的

[...rates.children].find(c=>c.checked).value

Let v=[…rates.children].find(c=>c.checked).value console.log (v); < div id = "利率" > <input type="radio" id="r1" name="rate" value="Fixed rate" >固定利率 <input type="radio" id="r2" name="rate" value="可变利率">可变利率 <input type="radio" id="r3" name="rate" value="Multi rate" checked="checked"> Multi rate . < / div >

其他回答

另一种(显然是旧的)选择是使用格式: ”document.nameOfTheForm.nameOfTheInput.value;“ 例如document.mainForm.rads.value;

document.mainForm.onclick = function(){ var radVal = document.mainForm.rads.value; result.innerHTML = '你选择了: '+radVal; } <form id=“mainForm” name=“mainForm”> <输入类型=“无线电” 名称=“rads” 值=“1” /> <输入类型=“收音机” 名称=“rads” 值=“2” /> <输入类型=“无线电” 名称=“rads” 值=“3” /> <输入类型=“收音机” 名称=“rads” 值=“4” /> </form> <span id=“result”></span>

您可以在表单中通过元素的名称来引用元素。但是,原始HTML不包含表单元素。

这里(适用于Chrome和Firefox): https://jsfiddle.net/Josh_Shields/23kg3tf4/1/

如果你正在使用jQuery:

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

假设你的表单元素是由下面的myForm变量引用的,并且你的单选按钮共享名称“my-radio-button-group-name”,以下是纯JavaScript和标准兼容的(尽管我没有检查它是否在任何地方都可用):

myForm.elements.namedItem("my-radio-button-group-name").value

上述操作将产生选中(或也称为选中)单选按钮元素(如果有)的值,否则为空。解决方案的关键是namedItem函数,它专门用于单选按钮。

看到HTMLFormElement。元素,HTMLFormControlsCollection.namedItem,特别是RadioNodeList。作为namedItem通常返回一个RadioNodeList对象。

(我使用MDN是因为它允许人们跟踪标准遵从性,至少在很大程度上是这样,而且因为它比许多WhatWG和W3C出版物更容易理解)

var rates = document.getElementById('rates').value;

rates元素是一个div,所以它没有值。这可能就是未定义的来源。

checked属性会告诉你元素是否被选中:

if (document.getElementById('r1').checked) {
  rate_value = document.getElementById('r1').value;
}

Or

$("input[type='radio'][name='rate']:checked").val();

这适用于IE9及以上版本和所有其他浏览器。

document.querySelector('input[name="rate"]:checked').value;