2011-11-14 83 views
0

问题请看下面的例子:从DOM访问表单元素在Firefox

<form action="process.php" id="myForm"> 
..... 
....... all my form elements 
</form> 

我第一次访问我的表单元素是这样的:

function verifyForm() { 
    var frm_elements = myForm.elements; 
    //do something here 
} 

上面的代码与最新版本的运作良好的Chrome和Internet Explorer。但是,Firefox总是失败。 FF抱怨错误:“找不到ID myForm的”

为了得到这个工作,我换成myForm.elements通过document.getElementById(“myForm的”)的元素。它在我测试的所有三种浏览器中运行良好。

我只是想知道为什么它在FF上失败?我做错了什么吗?

+0

使用'.getElementById()'获取DOM元素的引用。浏览器将根据具有'name'和/或'id'属性的DOM元素创建全局变量,但是您不应该依赖于该变量... –

回答

4

修改此

<form action="process.php" id="myForm"> 

这个

<form action="process.php" name="myForm"> 

因为DOM形成收集工作过名的,因此使用需要的名称属性添加到标签中的表单名称来访问。这将允许以下语句的工作。

document.forms["myform"] 
document.forms.myform 
document.myform 

下面是一些参考http://www.quirksmode.org/js/forms.html

+0

这是如何帮助约翰 – defau1t

+0

@refhat读取修改的。 –

+1

+1这是我能够重现问题的唯一方法。如果你通过'id'传递的东西可以解决。但是,如果您尝试使用字面名称进行访问,它会中断。 http://jsfiddle.net/smacky311/CWFCe/5/ –

0

显然Chrome和IE结合形式document。这不是标准的AFAIK。

> foo = 1 
> window.foo 
1 

getElementById是正确的路要走。虽然document.forms.myForm也适用于我。