2009-08-17 6 views
1

Я получаю undefined для ans. Зачем? что не так?Неопределенное значение, чтение ввода

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

Возможно, у вас есть два элемента с одинаковым именем и идентификатором? – Zed

ответ

3

У вас есть два элемента с одинаковым идентификатором, вызывающие конфликт имен. Они также совпадают с атрибутом name на том же элементе, что может вызвать некоторую путаницу в будущем.

5

Использование theForm.inputElement не является стандартным и не может гарантировать сотрудничество. Вместо этого вы должны использовать document.getElementById или какой-либо другой механизм DOM, чтобы найти нужный элемент ввода. theForm.elements[name] также работает.

Вам также нужно будет исправить свои идентификаторы элементов, прежде чем вы сможете это сделать - у вас есть два элемента с идентификатором «ans», что неверно. Идентификаторы должны быть уникальными:

<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

Пятно на, Рекс. @unknown, больше информации здесь: http://www.w3.org/TR/html401/types.html#type-name –

+0

@presleyster: Правильно, но между * name * и * id * существует большая разница. Рекс говорил о ids, а не о именах. –

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

Это будет работать

<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> 
Смежные вопросы