2017-03-09 22 views
0

私が試したすべてのものはうまくいきませんでした。ラジオの1つが選択されているかどうかを条件付きで確認し、常に1つが選択されるようにしたいだけです。どちらが選択されているかを知る必要があります。ラジオボタンの値を確認する方法

<label for="starting">Starting Player:</label> <input type="radio" name="starting" value="1" checked>P1 <input type="radio" name="starting" value="2" id="startingPlayer">P2 document.getElementById("startingPlayer").checked==true

どちらかが常に真か偽作り出します。これを回避する方法はありますか?

+1

あなたは、セレクタを使用することができます: 'document.querySelector( '[= "開始" 名]:チェックすると')'。 – RobG

答えて

1

ボタンのセットをループして、.checkedプロパティをチェックする必要があります。

必要なときにいつでもこれを行うことができます。ここでは、私はボタンをクリックしてそれをやっています。

var buttons = document.querySelectorAll("input[type=radio]"); 
 
var btnCheck = document.querySelector("button"); 
 
btnCheck.addEventListener("click", checkSelected); 
 

 
function checkSelected(){ 
 
    for(var i = 0; i < buttons.length; ++i){ 
 
    if(buttons[i].checked){ 
 
     console.clear(); 
 
     console.log("The selected radio button has a value of: " + buttons[i].value); 
 
    } 
 
    } 
 
}
<label for="starting">Starting Player:</label> 
 
<input type="radio" name="starting" value="1" checked>P1 
 
<input type="radio" name="starting" value="2" id="startingPlayer">P2 
 
<button>Get Selected Button Value</button>

0

ES6解決策になることができます。 Array#forEachを使用して、各ラジオボタンにchangeイベントをバインドし、実際に選択されたボタンの値を記録します。

var elems = document.getElementsByName('starting'); 
 
Array.from(elems).forEach(v => v.addEventListener('change', function() { 
 
    Array.from(elems).forEach(v => v.checked ? console.log(v.getAttribute('value')) : null) 
 
}))
<label for="starting">Starting Player:</label> 
 
<input type="radio" name="starting" value="1" checked>P1 
 
<input type="radio" name="starting" value="2" id="startingPlayer">P2

+0

これは、すべてのラジオボタンセットとチェックボックスを含む、チェックされたすべての入力を取得します。 * name *セレクタで始まる方が良いでしょう。「getElementsByName( 'starting') '」または「querySelectorAll([name =" starting "] ')' – RobG

+0

@RobG良いアイデアです。 –

関連する問題