2017-06-22 1 views
0

Ich versuche, den Wert von Radio-Button-Tag in HTML zu Javascript, jedes Mal, wenn ich versuche, zu tun, bekomme ich die Länge der Radio-Taste als 0 und Rückgabewert ist nicht definiert. Hier ist mein Code-Schnipsel (Wert ist dynamischdocument.getElementsByName funktioniert nicht für dynamische Werte von Radio-Button

<html> 
 
<body> 
 
<form> 
 
    What color do you prefer?<br> 
 
    <input type="radio" name="colors" id="red" onclick="check();">Red<br> 
 
    <input type="radio" name="colors" id="green" onclick="check();">Green<br> 
 
    <input type="radio" name="colors" id="yellow" onclick="check();">Yellow<br> 
 
    <input type="radio" name="colors" id="blue" onclick="check();">Blue<br> 
 
</form> 
 
<script> 
 
function check() 
 
{ 
 
    var isChangeReqd=getRadioButtonValue(document.getElementsByName("colors")); 
 
} 
 
function getRadioButtonValue(radioObj) 
 
{ 
 
    var value; 
 
    var radioLength=radioObj.length; 
 
    alert(radioLength); //is 0 //for value 
 

 
    for(var i=0;i<radioLength;i++) 
 
    { 
 
     if(radioObj[i].checked) return radioObj[i]; 
 
    } 
 
} 
 
</script> 
 
</body> 
 
</html>

Antwort

1

Sie angeben ID des Funk anstelle des Namens der Radiobuttons. Verwendung document.getElementsByName("colors") statt document.getElementsByName("red")

<html> 
 
<body> 
 
<form>What color do you prefer?<br> 
 
    <input type="radio" name="colors" id="red" onclick="check();">Red<br> 
 
    <input type="radio" name="colors" id="green" onclick="check();">Green<br> 
 
    <input type="radio" name="colors" id="yellow" onclick="check();">Yellow<br> 
 
    <input type="radio" name="colors"id="blue" onclick="check();">Blue 
 
</form> 
 
<script> 
 
function check() 
 
{ 
 
    var isChangeReqd=getRadioButtonValue(document.getElementsByName("colors")); 
 
} 
 
function getRadioButtonValue(radioObj) 
 
{ 
 
    var value; 
 
    var radioLength=radioObj.length; 
 
    alert(radioLength); //is 0 //for value 
 

 
    for(var i=0;i<radioLength;i++) 
 
    { 
 
     if(radioObj[i].checked) return radioObj[i]; 
 
    } 
 
} 
 
</script> 
 
</body> 
 
</html>

+0

Entfernen Alarm wird nicht helfen, denke ich. – user7455856

+1

Ich denke, das ist Ihre Lösung für Ihr Problem. Was ist das Problem? –

+1

@ user7455856 ist diese Antwort nicht ausreichend? – Anthony

0

Das Lesen der Document.getElementsByName() Funktion ist hilfreich. Zusammen mit den anderen Antworten sieht es so aus, als ob Sie den Wert des Radios durch Aufruf der "id" -Eigenschaft des Elements zurückgeben möchten: if(radioObj[i].checked) value=radioObj[i].id ; Hier ist ein funktionierendes Beispiel für das, was Sie meiner Meinung nach tun möchten.

function check() 
 
{ 
 
var isChangeReqd=getRadioButtonValue(document.getElementsByName("colors")); 
 
alert(isChangeReqd); 
 
} 
 

 
function getRadioButtonValue(radioObj) { 
 
var value; 
 
var radioLength=radioObj.length; 
 
alert(radioLength);//is 0//for value 
 

 
    for(var i=0;i<radioLength;i++) 
 
    { 
 
    if(radioObj[i].checked) value=radioObj[i].id ; 
 
    } 
 
    return value; 
 
}
<html> 
 
<body> 
 
<form>What color do you prefer? 
 
<br> 
 
    <input type="radio" name="colors" id="red" onclick="check();">Red<br> 
 
    <input type="radio" name="colors" id="green" onclick="check();">Green<br> 
 
    <input type="radio" name="colors" id="yellow" onclick="check();">Yellow<br> 
 
    <input type="radio" name="colors"id="blue"onclick="check();">Blue 
 
</form> 
 
</body> 
 
</html>

+0

Wert kommt als undefined und radioLength = 0 – user7455856

+0

Interessant. Wenn Sie dieses Code-Snippet in Chrome ausführen, wird die Iterationsnummer sowie der Wert der ID zurückgegeben. –

+0

Ich verwende Struts wie Framework, wo Radioknopf "Wert" und "ID" ich von Java bekomme. Bei der Verwendung von document.getElementsByName erhalte ich den Radiobutton-Wert als "undefined" und "length = 0". Ich kann sehen, dass der gleiche Code funktioniert, wenn ich Wert und ID-Attribut statisch gebe, d. H. Einfach während der Definition des Funk-Tags. – user7455856

Verwandte Themen