HTMLのID属性と名前属性の違い


回答:


626

このname属性は、フォーム送信でデータを送信するときに使用されます。コントロールによって反応が異なります。たとえば、id属性は異なるが同じのラジオボタンがいくつかあるとしnameます。送信すると、応答には1つの値、つまり選択したラジオボタンのみが含まれます。

もちろん、それだけではありませんが、間違いなく正しい方向に考えることができます。


少し詳しく説明してください。提出すると、応答には1つの値しかありません。選択したラジオボタンです。
NoviceToDotNet 2013年

ラジオボタン以外に使い方はありますか?それ以外に大きな違いがあると思いますか???
Prageeth godage 2013年

28
@Prageeth:違いは、「名前」がブラウザーからサーバーに転送され、「ID」とは異なる場合があることです。人々がその違いを望んでいる理由はたくさんあります。たとえば、サーバー側の言語/フレームワークでは、送信された値に特定の名前を付ける必要がある場合がありますが、JavaScriptは、IDが完全に異なるもので最適に機能します。
John Fisher、

29
非常に非公式に言えばid、フロントエンド(CSS、JS)が動作するのはでありname、サーバーが受信して処理できるのはです。これは基本的にグリーゾの答えが言うことです。
サラフ

2
それは言って良いかもしれない:name属性がされて必要な:データを送信するときに代わりに... name属性がされて使用 ...データを送信する際に欠落している任意の形式のデータので、名前の属性が送信されることはありません(または実際にはありませんHTML仕様に従って処理されたもの)
ebyrob

332

フォームの送信時に発生するまたは呼び出しで使用される識別子であるnameため、フォームコントロール(<input>およびなど<select>)の属性を使用します。POSTGET

idCSS、JavaScript、またはフラグメント識別子を使用して特定のHTML要素をアドレス指定する必要がある場合は、常に属性を使用します。要素を名前で検索することもできますが、IDで検索する方が簡単で信頼性が高くなります。


2
これは非常に明確でした。では、その「名前」はサーバーに送信されるパラメータ「識別子」をほとんど表していると思いますか?この質問は、受け入れられた回答によって部分的に回答されますが、それらの用語には入れられません。
トーマス

5
@Thomas:間には必要ネクタイがないnameid、すべてでは。識別子は、ページ上の特定のHTML要素を一意に識別します。name対照的に、HTMLフォーム要素の属性は一意である必要はなく、多くの場合、ラジオボタンや複数の<form>要素を持つページなどではありません。のために同じ文字列を使用する伝統的であるnameidの両方を単一のHTML要素で使用されている場合、何も、あなたがこれを行うものではありません。
ウォーレンヤング

いくつかのhtmlマークアップを解釈できるカスタムtextareaを実装しています。これを行うためにcontentEditable divを使用しました。'name'属性を追加すると、そのように動作しますか?
yev

125

ここに簡単な要約があります:

  • id(JavaScript経由またはCSSでスタイル設定された)ドキュメントオブジェクトモデルを通じてHTML要素識別するために使用されますidページ内で一意であることが期待されます。

  • nameform要素に対応し、サーバーにポストバックされるもの識別します


27

こちらをご覧くださいhttp://mindprod.com/jgloss/htmlforms.html#IDVSNAME

違いは何ですか?簡単に言えば、両方を使用し、心配する必要はありません。しかし、この間抜けを理解したい場合は、ここに細いです:

id =は、次のようなターゲットとして使用する<some-element id="XXX"></some-element>ためのものです<a href="#XXX"

name =は、フォームで送信をクリックしたときに、HTTP(HyperText Transfer Protocol)GETまたはPOSTを使用してサーバーに送信されるメッセージのフィールドにラベルを付けるためにも使用されます。

id =は、JavaScriptおよびJava DOM(Document Object Model)が使用するフィールドにラベルを付けます。name =の名前は、フォーム内で一意である必要があります。id =の名前は、ドキュメント全体で一意である必要があります。

サーバーが同じドキュメント内のさまざまなフォームまたは同じフォームのさまざまなラジオボタンから同じ名前を期待しているため、name =とid =の名前が異なる場合があります。id =は一意である必要があります。name =であってはなりません。

JavaScriptには一意の名前が必要でしたが、一意のname =名がないドキュメントが既に多すぎるため、W3の人々は一意であることが要求されるidタグを発明しました。残念ながら古いブラウザはそれを理解していませんでした。したがって、フォームには両方の命名規則が必要です。

注:などの一部のタグの属性「名前」<a>は、HTML5ではサポートされていません。


2
少し混乱しています...そして、私はいくつかの点で間違っていると思います。これではありませんか?パラメータはHTTPで使用されるため、送信のタグnameにとって重要であり、これは単なる一意の識別子です<input><form>id
Don Cheadle

また、この(未登録の)ユーザーは自分のページにリンクしています(彼のプロフィールのリンクにはmindprod.com/jgloss記載されています)。それがSOの問題であるかどうかはわかりませんが、やや混乱を招くスニペットを考えると、不適切と思われます。
zb226 2018

23

私はそれについて考え、それを使用する方法は簡単です:

idはCSSおよびJavaScript / jQueryに使用されます(ページ内で一意である必要があります)

nameは、フォームがHTML経由で送信されるときにPHPでのフォーム処理に使用されます(フォーム内で一意である必要があります-ある程度、以下のPaulのコメントを参照してください)


2
完全に当てはまるわけではありません。ラジオボタンをリンクできるため、Name属性はフォーム内で一意である必要はありません。
Paul

4
また、驚かれるかもしれませんが、PHPは世界で唯一のサーバー言語ではありません。
シャープな参照

@seesharper-それは面白いです。私もあなたに投票しました!ええ、はい、それは私を驚かせません:)
Greeso

14

IDタグ-CSSで使用され、div、span、またはその他の要素の一意のインスタンスを定義します。Javascript DOMモデル内に表示され、さまざまな関数呼び出しでアクセスできるようにします。

フィールドの名前タグ-これは、PHP /サーバー側の処理に渡す配列を実行している場合を除き、フォームごとに一意です。名前でJavaScriptを介してアクセスできますが、DOMのノードとして表示されないか、いくつかの制限が適用されると思います(たとえば、正しく思い出せば、.innerHTMLを使用できません)。


9
ラジオボタンが正しく動作するには、同じ名前を共有する必要があります。フォームごとに一意ではありません。
nickf 2009

私の間違い。明確にするために、テキスト入力、テキスト領域などでは、名前タグを使用してそれらを識別します。一意である必要はありません。
Extrakun

12

一般に、名前は常にidに取って代わられると想定されています。これはある程度当てはまりますが、実際には、フォームフィールドやフレーム名には当てはまりません。たとえば、フォーム要素では、name属性はサーバー側プログラムに送信される名前と値のペアを決定するために使用されるため、削除しないでください。Browsers do not use id in that manner。安全のために、フォーム要素でname属性とid属性を使用できます。したがって、次のように記述します。

<form id="myForm" name="myForm">
     <input type="text" id="userName" name="userName" />
</form>

互換性を確保するために、name属性とid属性の値が両方とも定義されている場合は、それらを一致させることをお勧めします。ただし、注意してください。一部のタグ、特にラジオボタンには、一意でない名前の値が必要ですが、一意のID値が必要です。繰り返しになりますが、これはそのidが単に名前の置き換えではないことを示しています。目的は異なります。さらに、古いスタイルのアプローチを軽視しないでください。最新のライブラリを詳しく調べると、パフォーマンスと使いやすさの目的で使用されるそのような構文スタイルが示されています。あなたの目標は常に互換性を支持するべきです。

現在、ほとんどの要素で、より遍在的なid属性のために、name属性は廃止されています。しかし、いくつかのケースでは、特にフィールドを形成する(<button><input><select>、および<textarea>)、それはフォームの送信のための名前と値のペアを設定するために必要とされることが続けるためにname属性の生活。また、フレームやリンクなどの一部の要素は、名前でこれらの要素を取得するのに役立つことが多いため、name属性を引き続き使用する場合があります。

idとnameの間には明確な違いがあります。多くの場合、名前が続く場合、同じ値を設定できます。ただし、idは一意である必要があり、名前は一意であってはなりません。ラジオボタンを考えてください。悲しいことに、ID値の一意性は、マークアップ検証によってキャッチされますが、本来あるべきほど一貫性がありません。ブラウザーのCSS実装は、id値を共有するオブジェクトをスタイルします。したがって、実行時までJavaScriptに影響を与える可能性のあるマークアップやスタイルのエラーを検出できない場合があります。

これは本JavaScript- The Complete Reference by Thomas-Powell


4
IDの一致名を作成する習慣を身につけない別の理由:同じデータを送信する必要があるページに2つのフォームがある場合があります(2つの検索フィールドなど)。この場合、はname同じである必要がありますが(サーバー側のコードはどちらが送信されたかには関係idありません)、異なる必要があります(ページ全体で一意である必要があるため)。
IMSoP 2016

10

nameリンクターゲットでは非推奨であり、HTML5では無効です。少なくとも最新のFirefox(v13)では動作しません。変更<a name="hello"><a id="hello">

ターゲットは<a>タグである必要はなく、<p id="hello"> <h2 id="hello">などにすることもできます。

他の投稿が明確に言うように、nameフォームではまだ使用されています(必要です)。METAタグでも引き続き使用されます。


「名前はリンクターゲットで非推奨」ではなく「リンクタグでは非推奨」という意味ですか?実際には、リンクターゲットはiframeにすることができます。そのiframeのname属性を指定しない場合、target属性はリンクに対して機能しません。その振る舞いはすべてのブラウザーでまだ残っており、HTML5に準拠しています。
yucer

私はここにリンクにする方法を把握しようとしていますアンカーをどこに行くのマーカーのように、 あなたが「#something」で終わるというURLを持っている場合。4の前のhtmlでは、私が知ることができる最高のものは<a name="something">でなければなりません。html 4では<a name="something" id="something">(一致)であり、html 5では<a id="something">ですが、idは何でも「グローバル属性」にすることができます。私が把握することはできませんすることは、IDに加えて、名前がされているかどうかである許容 HTML内の<a>に5.私は持って起こるものは何でもセットアップワットOK実験...
FutureNerd

9
<form action="demo_form.asp">
<label for="male">Male</label>
<input type="radio" name="sex" id="male" value="male"><br>
<label for="female">Female</label>
<input type="radio" name="sex" id="female" value="female"><br>
<input type="submit" value="Submit">
</form>


6

name Vs id

名前

  • 要素の名前。たとえば、サーバーがフォーム送信のフィールドを識別するために使用します。
  • サポート要素は <button>, <form>, <fieldset>, <iframe>, <input>, <keygen>, <object>, <output>, <select>, <textarea>, <map>, <meta>, <param>
  • 名前は一意である必要はありません。

id

  • CSSで特定の要素のスタイルを設定するためによく使用されます。この属性の値は一意である必要があります。
  • Idはグローバル属性です。すべての要素で使用できますが、属性によっては一部の要素に影響を与えない場合があります。
  • ドキュメント全体で一意である必要があります。
  • この属性の値には、スペースで区切られた値を許可するclass属性とは異なり、空白を含めることはできません。
  • ASCII文字と数字、「_」、「-」、「。」以外の文字を使用する HTML 4では許可されていなかったため、互換性の問題が発生する可能性があります。この制限はHTML 5で解除されましたが、互換性のためにIDは文字で始める必要があります。

nameスタイル要素で使用される属性を見てきました。これは無効だと思いますか?
Synetech 2016年

5

フォーム入力要素のIDは、要素内に含まれるデータとは関係ありません。IDは、JavaScriptおよびCSSで要素をフックするためのものです。ただし、name属性は、value属性に含まれるデータに関連付けられた変数名として、ブラウザーからサーバーに送信されるHTTPリクエストで使用されます。

例えば:

<form>
    <input type="text" name="user" value="bob">
    <input type="password" name="password" value="abcd1234">
</form>

フォームが送信されると、フォームデータは次のようにHTTPヘッダーに含まれます。

ID属性を追加しても、HTTPヘッダーの内容は変更されません。CSSとJavaScriptで簡単にフックできるようになります。


2

フォーム自体の送信メソッドを使用して情報をサーバーに送信していない場合(代わりにJavaScriptを使用して送信している場合)、非表示の入力値とペアにするのではなく、name属性を使用して入力に追加情報を添付できます。入力に組み込まれているため、見た目がきれいです。

このビットは現在Firefoxでも機能しますが、将来的には許可されなくなる可能性があります。

昔ながらの方法で送信することを計画していない限り、同じ名前の値を持つ複数の入力フィールドを持つことができます。


1

個人的な経験と属性のW3学校の説明に基づく:

IDはグローバル属性であり、HTMLのほとんどすべての要素に適用されます。Webページ上の要素を一意に識別するために使用され、その値は主にフロントエンドからアクセスされます(通常はJavaScriptまたはjQueryを介して)。

nameは、HTMLの特定の要素(フォーム要素など)に役立つ属性です。その値はほとんどの場合、処理のためにバックエンドに送信されます。

https://www.w3schools.com/tags/ref_attributes.asp


0

以下は、id属性の興味深い使用法です。タグ内で使用され、境界内の要素のフォームを識別して、フォーム内の他のフィールドに含まれるようにします。

 <form action="action_page.php" id="form1">
 First name: <input type="text" name="fname"><br>
 <input type="submit" value="Submit">
 </form>

 <p>The "Last name" field below is outside the form element, but still part of the form.</p>
 Last name: <input type="text" name="lname" form="form1">

0

Id:1)これは、(JavaScript経由またはCSSでスタイル設定された)ドキュメントオブジェクトモデルを通じてHTML要素を識別するために使用されます。2)IDはページ内で一意であることが期待されます。

名前はフォーム要素に対応し、サーバーにポストバックされるものを識別します。例:

<form action="action_page.php" id="Myform">
 First name: <input type="text" name="FirstName"><br>
 <input type="submit" value="Submit">
 </form>

 <p>The "Last name" field below is outside the form element, but still part of the form.</p>
 Last name: <input type="text" name="LastName" form="Myform">

0

IDは、要素を一意に識別するために使用されます。

名前はフォームで使用されます。フォームを送信しても、名前を指定しないと何も送信されません。したがって、フォーム要素には、「getまたはpush」などのフォームメソッドによって識別される名前が必要です。

そして、name属性のみのものは消えます。


0

idあなたは、要素を読み取るためのIDを使用することができます(JavaScriptのような)実際のコードを書くので、一度、要素にIDを与えるだろう。これnameは単なる名前なので、ユーザーは要素の名前を確認できます。

例:

<h1 id="heading">text</h1>
<script>
  document.getElementById("heading"); //Reads the element that has the id "heading".
</script>
//You can also use something like this:
document.getElementById("heading").value; //Reads the value of the selected element.

役に立ちましたか?何か問題があれば教えてください。


0

IDと名前の間に文字どおりの違いはありません。

nameは識別子であり、要素のvalue属性に含まれるデータに関連付けられた変数名としてブラウザからサーバーに送信されるhttpリクエストで使用されます。

一方、idはブラウザー、クライアント側、JavaScriptの一意の識別子です。Henceフォームにはidが必要ですが、要素には名前が必要です。

idは、固有の要素に属性を追加する場合に、より具体的に使用されます。DOMメソッドでは、JavaScriptで、アクションを実行する特定の要素を参照するためにIDが使用されます。

例えば:

<html>
<body>

<h1 id="demo"></h1>

<script>
document.getElementById("demo").innerHTML = "Hello World!";
</script>
</body>
</html>

同じことはname属性でも実現できますが、inputタグやselectタグなどの小さなフォーム要素のフォームと名前にはidを使用することをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.