2009-08-17 11 views
1

ansのgetingが未定です。どうして?なにが問題ですか?未定義の値、入力を読み取る

function submitAnswer() 
{ 

var myForm = document.getElementById('quiz'); 
var ansVal = myForm.ans.value; 
var qnoVal = myForm.qno.value; 

alert ("ans=" + ansVal); 
alert ("qno = " +qnoVal); 
return; 
} 

<form nam="quiz" id="quiz" > 
Yes: 
<input type="radio" id="ans" name="ans" value="1" /> 
<br />No: 
<input type="radio" id="ans" name="ans" value="0" /> 

<input id="qno" type="text" name="qno " value="qqq" /> 

<input type="button" value="" onClick="submitAnswer(); " /> 
</form> 
+0

誰かに動作します動作します。私はここでは新人です。私はペーストしたコードを見ることができません。なぜ?? – user156073

+0

おそらく、同じ名前とIDの2つの要素があるとしますか? – Zed

答えて

3

同じIDを持つ2つの要素があり、名前が競合しています。同じ要素のname属性と同じで、混乱を招く可能性があります。

5

theForm.inputElementの使用は標準ではなく、動作することを保証するものではありません。代わりに、document.getElementById、または他のDOMメカニズムを使用して、必要な入力要素を見つける必要があります。 theForm.elements[name]も動作します。あなたがそれを行うことができます前に、

また、あなたの要素IDを修正する必要があります - あなたは間違っているID「ANS」、2つの<input type="radio" />の要素を持っています。 IDは一意である必要があります:

<input type="radio" id="ans1" name="ans" value="1" /> 
<input type="radio" id="ans2" name="ans" value="0" /> 

<script type="text/javascript"> 
    var ans1 = document.getElementById('ans1'); 
    var ans1value = ans1.value; 
</script> 

または、elementsを使用して単一の要素としてのラジオボタンのグループを取得:

<script type="text/javascript"> 
    var theForm = document.getElementById('quiz'); 
    var ansValue = theForm.elements['ans'].value; 
</script> 
+0

ラジオの名前が異なる場合、ラジオは互いに選択を排除しません。 – JMP

+0

Spot on、Rex。 @unknown、詳細はこちら http://www.w3.org/TR/html401/types.html#type-name –

+0

@presleyster:そうですが、* name *と* id *には大きな違いがあります。レックスは名前ではなくidsについて話していました。 –

0

は試してみてください。

VAR ansVal = myForm.ans.checked。

0

これは動作します:

function submitAnswer() { 
    var myForm = document.getElementById('quiz'); 

    // Set a default value, in case no radio button is selected 
    var ansVal = 'default value here'; 

    var qnoVal = myForm.qno.value; 

    // Loop through radio buttons, getting the value of the 
    // one that is checked (selected). 
    var radioButtons = myForm.ans; 

    for (var i = 0; i < radioButtons.length; i++) { 
     if (radioButtons[i].checked) { 
      ansVal = radioButtons[i].value; 
     } 
    } 

    alert ("ans=" + ansVal); 
    alert ("qno = " +qnoVal); 

    return; 
} 
0

が、これはあまりにも

function submitAnswer() 
{ 

var myForm = document.getElementById('quiz'); 
var qnoVal = myForm.qno.value; 
var ansVal = 'none'; 

for(i = 0; i < myForm.ans.length; i++) 
{ 
    if(myForm.ans[i].checked == true) 
    { 
     ansVal = myForm.ans[i].value; 
     break; 
    } 
} 

alert ("ans=" + ansVal); 
alert ("qno = " +qnoVal); 
return; 
} 
0

これは、plzはそれを編集

<html> 
<form name="form"> 
Which one is good?<br> 
<input type="radio" name="food" value="Spud" 
checked="checked"> Spud<br> 
<input type="radio" name="food" value="Carrot"> Carrot<br> 
<input type="submit" onclick="get_radio_value()"> 
</form> 


<script type="text/javascript> 
<!-- 

function get_radio_value() 
{ 
for (var i=0; i < document.form.food.length; i++) 
    { 
    if (document.form.food[i].checked) 
     { 
     var rad_val = document.form.food[i].value; 
     alert(rad_val); 
     } 
    } 
} 

//--> 
</script> 
</html> 
関連する問題