2010-10-13 9 views
6

Mam problem z uzyskaniem dostępu do mojego formularza po jego nazwie. Kiedy używam document.form [0] .mylink.value, rozpoznaje on wartość i dane wyjściowe do podanego przeze mnie innerHTML. Jednak, gdy używam document.myform.mylink.value, wydaje się, że nie rozpoznaje formularza. Próbowałem tego w chrome 6.0, a także firefox 3.6.3 i uzyskać taki sam wynik w obu. Naprawdę potrzebuję móc uzyskać dostęp do wartości formularza za pomocą nazwy formularza (zamiast document.form [0]), wszelkie pomysły, dlaczego document.myform.mylink.value nie działa?Nie można uzyskać elementów formularza za pomocą nazwy formularza w javascript

<form name="myform"> 
<table> 
<tr><td valign="middle" align="center"> 
    <div id="textResponse"></div> 
</td></tr> 
<tr><td height="30" valign="middle" align="center"> 
    <input name="mylink" value="Enter a URL" size="31" /> 
</td></tr> 
<tr><td valign="top" align="center"> 
    <a href="javascript:submitForm2();">Click</a> 
</td></tr> 
</table> 
</form> 

<script type="text/javascript"> 
function submitForm2(){ 
    //This one does NOT work: 
    my_link = document.myform.mylink.value; 
    //This one also does NOT work: 
    //my_link = document.forms['myform'].mylink.value; 
    //This one works: 
    //my_link = document.forms[0].mylink.value; 

    document.getElementById("textResponse").innerHTML="<p>"+my_link+"</p>"; 
} 
</script> 
+1

Kod z pewnością nie jest XHTML (Transitional) ważny. 'action' jest wymaganym atrybutem dla elementów' form'. Powinien być przynajmniej ustawiony, nawet jeśli jest pusty. – Lekensteyn

+0

Trochę się spóźniłem, ale powodem, dla którego nie działa, może być brak atrybutu "typ". Domyślnie wiem, że jest to tekst, ale nie jestem pewien, czy to rzeczywiście obowiązkowe. –

Odpowiedz

18

Technicznie co masz powinno działać ok ... pełna składnia poniżej powinny również działać:

var my_link = document.forms['myform'].elements['mylink'].value; 

Jeśli przez przypadek zmienna w swojej „prawdziwej” kod jest "mylink" nie "my_link" cię dostanie błędy w IE, ponieważ automatycznie odwoła się do elementu formularza, a nie do wartości, którą próbujesz wyodrębnić.

To wszystko powiedział, kod jak pisał ... działa dobrze w Firefox/IE (demo tutaj: http://jsfiddle.net/Ymg8W/)

Powiązane problemy