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" /> 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" /> Operating System is used for Efficeint Resource Sharing <br/>
<input type="radio" name="options" value="optC" /> Operating System is used for Efficeint Resource Sharing <br/>
<input type="radio" name="options" value="optD" /> 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.
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" /> 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" /> Operating System is used for Efficeint Resource Sharing <br/>
<input type="radio" name="options" value="optC" /> Operating System is used for Efficeint Resource Sharing <br/>
<input type="radio" name="options" value="optD" /> 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.
-
Is
int
not a reserved keyword in js? – geekchic Commented Apr 20, 2011 at 16:31 -
@geekchic: Nope, see the spec:
in
,instanceof
and perhapsinterface
are, butint
is not. – Marcel Korpel Commented Apr 20, 2011 at 16:48
5 Answers
Reset to default 3Perhaps you mean document.getElementsByName(). Please notice the plural, since it can possibly return more than one node.
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.
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
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
.
See it yourself:
javascript:a=document.getElementsByName("options")[0];alert(a.value)
javascript:a=document.getElementsByTagName("input")[0];alert(a.value)