2011-11-14 128 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也適用於我。