2013-04-13 75 views
5

有人可以進入歷史記錄/爲什麼與表單元素交互使用名稱已經不再使用,document.getElementById已接管。爲什麼大多數表單使用ID代替NAME的原因

歷史上發生了什麼事情促使了這種變化和轉變。

最後,有沒有轉變,或者仍然是推薦的做事方式?

Document.getElementById vs document.form.name 

根據一些論壇的討論document.form.name不被所有的瀏覽器識別。是這樣嗎?請參閱:

"I've been told in the past that you should not use "document.form_name.element_name" compared to "document.getElementById()", as the first is not recognized by all browsers. " 
+0

實際問題是什麼? 「你應該只根據你面臨的實際問題提出切實可行的,可回答的問題。」http://stackoverflow.com/faq –

+0

問題是兩種方式都可以工作,但是在編寫代碼時知道什麼更正確是很好的。 –

+0

解釋爲「哪一個更正確」的建設性問題,這是一個重複(至少一箇舊問題)。 –

回答

3

酒店NAME不一定是唯一的。例如,單選按鈕被分組爲具有相同的名稱。調用getElementByName將返回集合中的所有按鈕。 ID意思是獨一無二的。所以,要回答你的問題,每個人都有自己的位置。

+0

這個真的很有意義。你知道關於通過NAME訪問HTML DOM規範的任何信息,因此使用它的代碼不能被描述爲符合標準。我剛剛發現http://jibbering.com/faq/notes/form-access/#faShrt,其中概述了這一點,但我不知道文檔何時寫入以及它是否今天仍然有效。除非當然,我沒有正確的讀過這句話。 –

1

name當作爲document.forms[name].element[name]訪問時是普遍可接受的。它支持IE 5.5,Firefox 0.8,Opera 5,Navigator 4等。它過時了,因爲jQuery的簡單性讓人們忘記了它。

但是,如果一個input元素具有相同的名稱form對象上的屬性,然後訪問它可能無法正常工作:例如,

<form name="hi" action="/go"><input name="action" value="world"> 

應該document.hi.action給你「/去」或「[輸入值=世界]「?

+0

貌似你完全可以通過'.attributes'完全消除歧義,就像在document.forms [「hi」]。attributes [「action」] .value'和'.elements'中一樣。document.forms [「hi」 ] .elements [「action」]',並且兩者似乎都符合W3C標準。 – JayC

相關問題