2013-04-13 6 views
5

NAMEを使用してフォーム要素とやり取りすることが実際に行なわれておらず、document.getElementByIdが引き継ぎましたか?ほとんどのフォームJavaScriptがNAMEの代わりにIDを使用する理由

正確に歴史的に何が起こったのかは、この変化とシフトを促しました。

最後に、やり方が変わっているのか、それともどちらもやっていることが推奨されていますか?

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

建設的な質問「どちらが正しいか」と解釈されますが、これは(少なくとも1つの古い質問の)重複したものです。 –

答えて

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

'document.forms [" hi "]。attributes [" action "]。value'と' .elements'のように、特に '.attributes'を使って完全に明確にすることができます。 ' document.forms ["hi" ] .elements ["action"] 'であり、両方ともW3C標準の中にあるように見えます。 – JayC