2010-10-13 19 views
6

biçiminde form adı kullanarak form öğeleri alamıyorum Formumun adıyla ona erişme konusunda bir sorun yaşıyorum. Document.form [0] .mylink.value kullandığımda, belirttiğim innerHTML değerine ve çıktılarına tanıyor. Ancak, document.myform.mylink.value kullandığımda, formu tanımak gibi görünmüyor. Bunu 6.0'da ve aynı zamanda firefox 3.6.3'te denedim ve her ikisinde de aynı sonucu elde ettim. Form form değerlerine (document.form [0] yerine) form ismini kullanarak erişebilmem gerekiyor, document.myform.mylink.value neden çalışmıyor?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

Kodunuz kesinlikle geçerli (Geçiş) XHTML değildir. "action", "form" öğeleri için gerekli bir özelliktir. Boş olsa bile en azından ayarlanmalıdır. – Lekensteyn

+0

Biraz geç kaldım ama çalışmadığı nedeni, "type" özelliğini kaçırmanızın nedeni olabilir. Varsayılan olarak bu metin biliyorum, aslında zorunlu olsa da emin değilim. –

cevap

18

sen iyi çalışması gerekir var Teknik olarak neyi ... aşağıda tam sözdizimi da çalışması gerekir: tesadüfen sizin "gerçek" kod sizin değişken "mylink"değil"my_link" sensin

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

ise özü almaya çalıştığınız değeri değil, form öğelerini otomatik olarak referans alacağından IE'de hatalar oluşur. Bütün dedi ki

Firefox/IE sadece ince yayınlanmıştır ... eserler olarak kodunuzu (burada demo: http://jsfiddle.net/Ymg8W/)