- 締切済み
フォーム要素の操作について
フォーム要素(input、selectなど)の取得や設定の際に、セレクタにidやclassを使う人とnameを使う人がいます。 どちらが推奨かご教授いただきたく。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- licht_gkk
- ベストアンサー率80% (4/5)
使用方法によって推奨が違います。 idは値が一意である事を前提としていて、nameは値が重複しても良い。 <input type="text" id="mailaddress1" name="mailaddress" /> <input type="text" id="mailaddress2" name="mailaddress" /> 例えば上記のようなメールアドレス1/メールアドレス2のフォーム要素があり、 メールアドレス1だけ操作したい!という場合はIDから取得した方が早い。 メールアドレス1も2もどちらも一緒に操作したいならnameで取得すればどちらも一度に取得できるのでname指定の方が楽だしコードも短くて済みます。 適材適所だと思います。
- tracer
- ベストアンサー率41% (255/621)
たとえば、inputにnameもidもclassも設定されている場合、どれを使ってDOMを取得するかという話でしょうか? その場合は、No.1さんがおっしゃるように、idで取得したほうが高速でしょう。 ただ、実行が高速なことと、制作的に効率がよいかは別です。classやname以外にも、いろんなセレクタを使ってコードをシンプルに書いたりすることもあります。ユーザー観点だけで見れば、高速なほうがいいですね。 ちなみに、jQueryで$("#hoge")が高速なのは、document.getElmentByID("hoge")を実行するからです。 状況にもよりますが、平たく考えるならば、getElmentByIDが一番ブラウザに負担なくDOMを取得できるということになります。 質問の意味がそうではなくて、form要素に、nameかidかclassのどれかの属性を1つ使うとしたらどれを使うか、ということであれば、それはnameだと思います。ajax前提のformであれば、機能的にはname属性すら必要なくなりますが、name属性を使用すると、jQueryであれば、$.serialize()が使えますし、html5でならformdataが使えるのでいろいろと便利です。
- ONEONE
- ベストアンサー率48% (279/575)
jQueryを使う場合はidが最速だそうです。 その場合もtag#id ではなく#idの方がよい。 生のjavascriptは知りません。