1

I am trying to get the value of the checked radio button with the following code:

<html>
<head>
<script type="text/javascript" >
    window.onload = initAll;

    function initAll(){     
        var allAnchors = document.getElementsByName("options");
        for ( var int = 0; int < allAnchors.length; int++) {
            if(allAnchors[int].className == "buttonLink"){
                allAnchors[int].onclick = fetchQuestion;
            }
        }
    }

    function fetchQuestion(){

        var toLoad = this.href;
        var selectedAnswer = "";                
        var allRadio = document.getElementsByTagName("input");

        for(var i = 0;i<allRadio.length; i++){
            if(allRadio[i].checked == true){
                selectedAnswer = allRadio[i].value;
            }
        }       
            alert(selectedAnswer);
                return false;
         }
</script>
</head>
<body>
<input type="radio" name="options" value="optA" />&nbsp; &nbsp;Operating System is used for Efficeint Resource Sharing Operating System is used for Efficeint Resource Sharing Operating System is used for Efficeint Resource Sharing <br/>
             <input type="radio" name="options" value="optB" />&nbsp; &nbsp;Operating System is used for Efficeint Resource Sharing <br/>
             <input type="radio" name="options" value="optC" />&nbsp; &nbsp;Operating System is used for Efficeint Resource Sharing <br/>
             <input type="radio" name="options" value="optD" />&nbsp; &nbsp;Operating System is used for Efficeint Resource Sharing <br/>
<a href="SubmitSheet" class="buttonLink">Submit</a>
        <a href="NextQuestion" class="buttonLink">Next</a>
        <a href="PreviousQuestion" class="buttonLink">Previous</a>
        <a href="PassQuestion" class="buttonLink">Pass</a>
</body>
</html>

here if i used document.getElementByTagName("input"), then it is working. but with document.getElementByName("options") it is not. So what's the problem with this?? Can't i use document.getElementByName with radio buttons.

NoWar
  • 36,338
  • 80
  • 323
  • 498
codeomnitrix
  • 4,179
  • 19
  • 66
  • 102

5 Answers5

3

Perhaps you mean document.getElementsByName(). Please notice the plural, since it can possibly return more than one node.

Álvaro González
  • 142,137
  • 41
  • 261
  • 360
2

The problem is likely that you are calling "document.getElementByName("options")"

getElementByName is undefined

you want to call getElementsByName, which will return an element collection.

Mark At Ramp51
  • 5,343
  • 1
  • 25
  • 30
1

I believe the method is plural document.getElementsByName because many items can share a name. If you want a single element, add an id and use document.getElementById or use name and narrow down your array.

javascript getElementByName doesn't work

Community
  • 1
  • 1
Eli
  • 17,397
  • 4
  • 36
  • 49
0

Just change this line:

var allAnchors = document.getElementsByName("options");

To this instead:

var allAnchors = document.getElementsByTagName("a");

And your code should work as expected.

The getElementsByName has its own usage, but to grab all the anchor tags in the document you need other method which is getElementsByTagName.

Community
  • 1
  • 1
Shadow The GPT Wizard
  • 66,030
  • 26
  • 140
  • 208
0

See it yourself:

javascript:a=document.getElementsByName("options")[0];alert(a.value)

javascript:a=document.getElementsByTagName("input")[0];alert(a.value)
Elieder
  • 141
  • 1
  • 7