未定义的值,读取输入

时间:2009-08-17 16:46:32

标签: javascript forms

我为和而未定义。为什么?怎么了?

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>

6 个答案:

答案 0 :(得分:5)

使用theForm.inputElement不是标准,无法保证正常工作。相反,您应该使用document.getElementById或其他一些DOM机制来查找所需的输入元素。 theForm.elements[name]也有效。

您还需要先修复元素ID,然后才能执行此操作 - 您有两个<input type="radio" />元素ID为“ans”,这是不正确的。 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>

答案 1 :(得分:3)

您有两个具有相同ID的元素,导致名称冲突。它们也与同一元素上的name属性相同,这可能会引起一些混乱。

答案 2 :(得分:0)

尝试:

var和Val = Form.and.checked;

答案 3 :(得分: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;
}

答案 4 :(得分: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;
}

答案 5 :(得分:0)

这将有效

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