2017-06-22 5 views
0

ラジオボタンのタグからJavaScriptの値をjavascriptにフェッチしようとするたびに、ラジオボタンの長さが0になっています。戻り値は未定義です。ここで、私のコードスニペットがある(値は、あなたが代わりにラジオボタンの名前のラジオのIDを指定しているdocument.getElementsByNameがラジオボタンのダイナミック値では機能しない

<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>

答えて

1

動的です。 使用document.getElementsByName("colors")代わり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

私は推測助けにはなりません。 – user7455856

+1

これはあなたの問題に対するあなたの解決策だと思います。何が問題ですか? –

+1

@ user7455856はこの回答では十分ではありませんか? – Anthony

0

Document.getElementsByName()の機能を読んで参考にしてください。他の答えに加えて、それはあなたが要素 "id"の要素を呼び出すことによってラジオの価値を返すことを望むかもしれないようです:if(radioObj[i].checked) value=radioObj[i].id ; ここにあなたがしたいと思っているものの実例があります。アラートを削除する

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

値は未定義となり、radioLength = 0 – user7455856

+0

インテグレスです。 Chromeでこのコードスニペットを実行すると、繰り返し番号とidの値が返されます。 –

+0

私はフレームワークのようなストラットを使用しています。ラジオボタンの "value"と "id"はjavaから取得しています。 document.getElementsByNameを使用している間、私は "undefined"と "length = 0"としてラジオボタンの値を取得しています。私は値とid属性を静的に、つまり単に無線タグを定義しているときに、同じコードが動作しているのを見ることができます。 – user7455856

関連する問題