2010-10-13 70 views
6

我遇到与其名称访问我的表单时遇到问题。当我使用document.form [0] .mylink.value时,它会识别值并输出到我指定的innerHTML。但是,当我使用document.myform.mylink.value时,它似乎无法识别窗体。我已经在Chrome 6.0和FireFox 3.6.3中尝试了这一点,并获得相同的结果。我真的需要能够通过使用表单名称(而不是document.form [0])访问我的表单值,为什么document.myform.mylink.value不起作用的任何想法?无法通过在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

你的代码肯定不是XHTML(过渡)有效。 'action'是'form'元素的必需属性。至少应该设置它,即使它是空的。 – Lekensteyn 2010-10-13 19:28:59

+0

我有点晚,但它不工作的原因可能是因为你缺少“type”属性。我知道默认情况下它是文本,不知道它是否实际上是强制性的。 – 2013-07-18 07:46:54

回答

18

你有什么技术上应该工作确定...下面的完整语法也应该工作:

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

如果碰巧你在你的“真正的”代码变量"mylink""my_link"你会在IE中失败,因为它会自动引用表单元素,而不是您要提取的值。

这一切都表示,你的代码张贴 ... 作品只是在Firefox/IE罚款(演示这里:http://jsfiddle.net/Ymg8W/

相关问题