2010-10-13 8 views
6

Ho riscontrato un problema con l'accesso al mio modulo tramite il suo nome. Quando uso document.form [0] .mylink.value riconosce il valore e restituisce l'innerHTML che specifico. Tuttavia, quando uso document.myform.mylink.value non sembra riconoscere il modulo. Ho provato questo in Chrome 6.0 e anche Firefox 3.6.3 e ottenere lo stesso risultato in entrambi. Devo davvero essere in grado di accedere ai valori del mio modulo usando il nome del modulo (invece di document.form [0]), qualche idea sul perché document.myform.mylink.value non funzioni?impossibile ottenere gli elementi del modulo utilizzando il nome del modulo in 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

Il codice non è certo XHTML (transitoria) valida. 'action' è un attributo obbligatorio per gli elementi' form'. Dovrebbe essere impostato almeno, anche se è vuoto. – Lekensteyn

+0

Sono un po 'in ritardo ma il motivo per cui non funziona potrebbe essere perché ti manca l'attributo "tipo". So che per impostazione predefinita è testo, non sono sicuro che sia effettivamente obbligatorio. –

risposta

18

Tecnicamente quello che hai dovrebbe funzionare bene ... la sintassi completa di seguito dovrebbe funzionare anche:

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

Se per caso la variabile nel codice "reale" è "mylink"non"my_link" voi otterrà errori in IE in quanto farà riferimento automatico all'elemento del modulo, non al valore che si sta tentando di estrarre.

Che tutti Detto questo, il codice come pubblicato ... funziona bene in Firefox/IE (demo qui: http://jsfiddle.net/Ymg8W/)

Problemi correlati