web-dev-qa-db-ja.com

HTML要素がその[id]と同じ[name]を持っていても大丈夫ですか?

Satayメソッドを使用してWebページにFlashアプリを埋め込む作業をしています。

<object type="application/x-shockwave-flash" data="embeddy.swf"
id="embeddy" name="embeddy">
  <param name="movie" value="embeddy.swf" />
</object>

FlashがExternalInterface.objectIDに正しいobjectIDを提供するようにしたいのですが、これはname属性とid属性の両方をobjectに設定する必要があることを意味します。 。

通常、HTMLの要素との名前の衝突を避けようとしますが、この場合、両方の属性を同じ値に設定することに何か問題がありますか?

HTMLフォームはどうですか? a(n)(input | select | textarea)要素のnameを設定する価値があると感じている人はいますか?とid属性を同じ値に?

37
zzzzBov

JavaScriptの操作にはIDを使用します。

フォームフィールドの送信には名前を使用します。

2つは関連していません。したがって、両方を同じ値に設定しても問題ありませんが、必須ではありません。

それは大丈夫であるだけでなく、かなり一般的です。

IDは、Javascript(および程度は低いですがCSS)に使用されます。

送信された値の名前を指定するために、フォームフィールドに名前が使用されます。

ただし、古いバージョンのIEには既知のバグがあり、多くの場合、両方を同じように指定する必要があります(もちろん、これらの古いバージョンのIEをサポートしたい場合)。

ただし、覚えておくべきことの1つは、IDは一意である必要があるということです。したがって、すべて同じ名前のラジオボタンがある場合、それらすべてに同じIDを使用することはできません。ただし、他のほとんどの場合、同じにすることはまったく問題ありません。

7
Spudley

うん!これは絶対に問題ありません。

idはクライアント側の識別子です(DOMで要素を検索する場合)

nameは、値をPOST/GETするためのフォーム送信中に使用されます。

入力要素の外では、nameを使用する必要はまったくありません。ただし、入力要素にidを指定すると、一貫した方法でDOMで検索できます。

2
Moo-Juice

私はちょうど発見しました 私の質問に対するHTML4の答え

Id属性とname属性は、同じ名前空間を共有します。つまり、同じドキュメント内で同じ名前のアンカーを両方で定義することはできません。両方の属性を使用して、次の要素の要素の一意の識別子を指定することができます。A, APPLET, FORM, FRAME, IFRAME, IMG, and MAP両方の属性が単一の要素で使用される場合、それらの値は同一である必要があります。

ここで、appletおよびiframeに適用されるルールは、拡張により、objectおよびembedタグに対して機能するはずであると想定します。いずれにせよ、同じ名前とIDを使用しても、これまでに異常なイベントは発生していません。

2
zzzzBov

私はいつもそれをしています(ほとんどの場合、過去の一部のブラウザー-IEが頭に浮かぶ-フォームデータを送信するときにnameパラメーターのみを使用するため)。idを使用すると、フォーム検証コードがはるかにクリーンになります。 IMO。

1
Brian Flanagan