Note that you can also get inputs via the form element, which is helpful if you have more than two radio buttons in a group.
HTML Code:
<form name="colorForm">
<input type="radio" name="color" value="red" id="color_red"/><label for="color_red">Red</label>
<input type="radio" name="color" value="green" id="color_green"/><label for="color_green">Green</label>
<input type="radio" name="color" value="blue" id="color_blue"/><label for="color_blue">Blue</label>
</form>
<script type="text/javascript">
var colors = document.forms.colorForm.elements.color,
colorElt;
var i;
for (i=0; i < colors.length; ++i) {
if (colors[i].checked) {
colorElt = colors[i];
break;
}
}
</script>
You can also track which radio button is selected by adding change or click handlers to the radio buttons.
HTML Code:
<form name="colorForm">
<input type="radio" name="color" value="red" id="color_red"/><label for="color_red">Red</label>
<input type="radio" name="color" value="green" id="color_green"/><label for="color_green">Green</label>
<input type="radio" name="color" value="blue" id="color_blue"/><label for="color_blue">Blue</label>
</form>
<script type="text/javascript">
function trackSelectionOf(watcher, inputs) {
function createSelectionTracker(elt) {
return function () {
watcher.selected[elt.name] = elt;
}
}
if (typeof watcher.selected == 'undefined') {
watcher.selected = {};
}
var tracker;
for (i=0; i < inputs.length; ++i) {
/* Note: you'll have to simulate addEventListener in IE using attachEvent,
or use a library that does it for you
*/
inputs[i].addEventListener('change',
tracker=createSelectionTracker(inputs[i]),
false);
if (inputs[i].checked) {
tracker();
}
}
}
function trackSelection(form) {
var done={},
input;
for (i=0; i < form.elements.length; ++i) {
input = form.elements[i];
if (!done[input.name] && input.type == 'radio') {
done[input.name] = true;
trackSelectionOf(form, form.elements[input.name]);
}
}
}
trackSelection(document.forms.colorForm);
/* current selection for colorForm.color can be accessed as
document.forms.colorForm.selected.colors
*/
</script>