• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HTMLでのid とnameの違い)

HTMLのidとnameの違いと使い方、JavaScriptでの取得方法

このQ&Aのポイント
  • HTMLのidとnameの違いについて説明します。idは各エレメントに個別に与える識別子であり、getElementById()メソッドなどでよく使われます。一方、nameプロパティはフォーム要素などで使用され、値を送信するための識別子として機能します。
  • HTMLでid属性を使用すると、その要素に固有の識別子を与えることができます。JavaScriptでgetElementById()メソッドを使用することで、id名に基づいて要素を取得することができます。一方、HTMLでname属性を使用すると、グループ化やデータの送信などを目的とした要素の識別子を指定することができます。
  • JavaScriptでid属性で指定された要素を取得する際、その要素が他の要素の子要素である場合でも取得することができます。そのため、質問文中の例ではidが指定されたimg要素は、a要素のname属性の値も持つことができます。これはHTMLの仕様上の挙動であり、二つの要素が一体に扱われるわけではありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

Link_nameを呼び出せば当然のことながら、親であるA要素のname属性の値が参照されます。 nameプロパティではなく、attrですからattribute(属性)です。 idは文書中に一箇所しかありえませんからjavascriptのターゲットとして使用するのが簡単です。 HTMLの属性のnameは、通常は一箇所ですがFORMの内部などでは複数存在し得ます。 <form>  <input type="radio" name="ABC" value="123">  <input type="radio" name="ABC" value="234">  <input type="radio" name="ABC" value="456"> とか・・  気をつけないとならないのは、リンクに関しては、name属性とid属性は同じ名前空間を持つことです。 BUTTON, TEXTAREA, APPLET , SELECT, FORM, FRAME, IFRAME, IMG, A, INPUT, OBJECT, MAP, PARAM, META要素がname属性を持ちえますが、そのうちA、APPLET、FORM、FRAME、 IFRAME、IMG、MAP要素に関しては、idと同じ必要があります。それ以外(BUTTON, TEXTAREA, SELECT, INPUT, OBJECT, PARAM)は、id属性値とname属性値は異なっても良いです。nameは一意である必要は、条件がありますが)ありません。

papashiroSooke
質問者

お礼

早速詳しい回答を頂き、有難うございます。 名前空間とか、なんだか難しそうなものが出て来ましたが、まだよくわからないので自分でも研究してみようと思います。 とりあえず、id は一意の識別子で name は複数要素を持つタグの中で共通に使えるということを覚えておきたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • idからエレメント取得するには?

    (1)<INPUT NAME="name1" MAXLENGTH="10" VALUE="" id="id1" > (2)<INPUT NAME="name2" onKeyPress="chk(event);" VALUE="" id="id2"> 上記の二つのinputタグのIDからエレメントを取得したいと思っています 知っている限りではgetElementByIdを使おうと思い 例) a = document.getElementById('id1'); b = document.getElementById('id2'); 実行してみた所(1)は上手く行きましたが (2)では上手く行きませんでした。 アラートを表示させ結果を見てみた所 (1)[object] (2)null になりました どうして(2)のほうはエレメントが取れずnullになるのでしょうか? また(2)のinputタグからエレメントを取る方法はありますでしょうか? よろしくお願いいたします

  • JavaScriptでエレメントのIDを取得

    JavaScriptで、エレメントのIDを取得する方法がわからず困っています。 [画像]ここをクリック [画像]ここをクリック 上記が画面配置のイメージなのですが、「ここをクリック」の文字をクリックした時に、そのクリックされた<a>タグのIDを取得したいのです。 以下が試行錯誤したソースの一部です。 [html] <img src="./test_01.gif" name="testImg01"> <a href="javascript" id="test_01" onclick="getID(this);">ここをクリック</> <img src="./test_02.gif" name="testImg02"> <a href="javascript" id="test_02" onclick="getID(this);">ここをクリック</a> [JavaScript] function getID(element) { var id = document.getElementById(id); alert(id); } 上記コードで得られたのは「null」という値でした。 色々検索してはいるのですが、思うように値を取得できません。 どうか知恵をお貸しください。

  • .getElementByIdでnameを拾う?

    javascriptで.getElementByIdでなぜかname属性を拾ってしまいます。 <script> function gets() { aa = document.getElementById('idid').innerHTML; bb=document.getElementById('idid').tagName; alert(aa+bb); } </script> <input type="submit" value="ボタン" name="idid" onclick="gets();"><span id="idid">ああああ</span> 上記は大分省略してえいますが、このようなコードで aaに「ああああ」が代入されず、bbに「INPUT」が代入されます。 通常ならアラーとは「ああああSPAN」のはずが「INPUT」になってしまいます。 どのような理由が考えられるでしょうか。 ちなみに、HTMLページはフレーム内で表示しています。

  • a name(id)1回目で飛べない

    HTMLでのホームページ作成についてです。 (カテゴリー違いでこちらに移させていただきました。) 画像ファイルを40枚(01.gif~40.gif)貼り付けたページ「200800.html」を作りました。 画像ファイルの大きさは全て10kb程度です ページの途中の特定の場所にジャンプさせるため、アンカーを埋め込みました。 (アンカーは「name」と「id」を併用しています) <html><body> <img name="01" id="01" src="01.gif"><br> <img name="02" id="02" src="02.gif"><br> … <img name="39" id="39" src="39.gif"><br> <img name="40" id="40" src="40.gif"><br> </body></html> 「200800.html」へのリンクを貼ったページ「index.html」を作りました。 20番の画像へジャンプするように設定しました。 <html><body> <a href="image/200800.html#20">20番の画像</a> </body></html> ところがなぜか1回目のクリックでは20番の画像には飛びません。 (別の画像の中途半端な位置とか、その時によって違います。) 2回目以降はちゃんと飛びます。 どうやらブラウザが「200800.html」を全て読み込むまえに表示してしまうためおかしなところが表示されるようです。 2回目以降は1度読み込んでいるためちゃんと飛ぶようです。 win(IE6)でもmac(safari)でも同様です。 どうか良い解決策をお教えください。よろしくお願いします。

    • ベストアンサー
    • HTML
  • nameを使わずにidだけで

    よろしくお願いします XHTML1.0 StrictでJavascriptを使おうと思ったのですが 通常 <img src="1.gif" width="180" height="155" alt="" name="b01" onmouseover="document.b01.src='02.gif'" onmouseout="b01.document.src='01.gif'" /> と書いているのを nameを使わずにidだけで同じ動作を行うにはどうしたらいいのでしょうか? 参考になるホームページなどありましたらよろしくお願いします

  • HTMLとJavascriptの汎用的な書き方について

    HTMLのタグにid="namae"とすれば、Javascriptでdocument.getElementByIdを使って平面状に(すべてdocumentの下?)でアクセスできるので、 getElementByIdは便利かなと思っているのですが、 タグで name属性を使ってアクセスする場合と、 id属性でgetElementByIdでアクセスする場合の どちらが今後一般的になるのでしょうか? nameは昔から?あったようなので、切り捨てるのも 気になりますが、記述の面で両方書くと手間なので、 id属性で一本化しても問題ないでしょうか?

  • クリックで特定のdiv要素が表示されるJavascriptに追加機能を

    クリックで特定のdiv要素が表示されるJavascriptに追加機能を持たせたい よろしくお願い致します。 下記のようなコードで、HTML部分の「リンクテキスト」をクリックすると「クリックで開く内容」が表示され、かつ、リンクテキスト(id="link-1")の文字色が変わるJavascriptを使用しています。 ■Javascript部分 function showHide(targetID) { if( document.getElementById(targetID)) { if( document.getElementById(targetID).style.display == "none") { document.getElementById(targetID).style.display = "block"; document.getElementById('link-1').style.color = "#cc0000"; } else { document.getElementById(targetID).style.display = "none"; document.getElementById('link-1').style.color = "#000000"; } } } ■HTML部分 <a href="#" id="link-1" onClick="showHide('hoge1');return false;">リンクテキスト</a> <div id="hoge1" style="display:none;">クリックで開く内容</div> リンクテキストの文字色が変わる部分は見よう見まねで追加したのですが、文字色が変わる部分を、link-2、link-3・・というように同ページに複数配置したい場合、どのようなコードに変更すればよいのでしょうか。 できればid="link-1"などという記述はせずに、showHide('hoge1');をshowHide('hoge2');に変えて、<div id="hoge1" style="display:none;">を<div id="hogge2" style="display:none;">に変えるだけで、文字色も変わるようにできれば一番良いのですが、そのような方法はあるのでしょうか? 分かりにくい箇所は補足説明致しますので、どうぞご教授下さいますようお願い致します。

  • XHTMLとHTMLの違いについて

    XHTMLのHTMLの違いについて教えてください。 勉強するものの、これといった違いが判らずにこまってます。 (今のところ、HTMLとは記述方式が違うんだよ~とか、XMLの宣言が必要なんだよ~、ということはわかったのですが) (参考したURL) http://www.atmarkit.co.jp/fxml/askxmlexpert/022xhtml/22xhtml.html HTMLとXHTMLの違いとして以下の点が挙げられていることがわかりました。 ----------------------------------------------------------------- 1.文書は整形式でなければならない 2.要素名及び属性名は小文字でなければならない 3.非空要素には終了タグが必要である 4.属性値は常に引用符で括られなければならない 5.属性の省略化はしてはならない 6.meta、hr、br、img などは、空要素として書く 7.属性値内での改行を含む複数の空白は1つと見なす 8.スクリプトおよびスタイル要素の定義が異なる 9.要素の入れ子などSGMLの排除機能を再現できない 10.‘id’および‘name’属性をもつ要素は、‘id’属性を使用する ----------------------------------------------------------------- とあるのですが、違う部分っていうのは「こういった定義部分だけ」であって、動作として大きな違い「ここが違うんだ」といった部分はないのでしょうか? 「書式が厳密になっています。」言葉から、XHTMLは「HTMLをより厳密に書くもの」ということなのでしょうか? また、10番目の、 「‘id’および‘name’属性をもつ要素は、‘id’属性を使用する 」について、イメージできなかったのですが、一体何のことを言っているのでしょうか? 例えば、JavaScriptを使用して、要素を操作する場合は、 getElementById("ID名")にて、操作を行うべきである、と言っているのでしょうか?

    • ベストアンサー
    • HTML
  • HTMLで別のフォルダのファイルにリンクする。

    HTMLとasp.netで開発をしています。 開発初心者です。 あるHTMLファイルから、別のフォルダのHTMLファイルへリンクし、 特定の位置に部分に移動したいのですが、うまくできません。 リンク元 <a href="../aa/bbb.aspx#test">test</a> リンク先 <th class="m"><a name="test">ここに飛んで!</a></th> リンク先のはじめに、 <form id="form1" name="form1" method="post" action="aaa.aspx">が 書かれているのですが、関係ありますか? リンク先を id や name で設定してみたりと、いろいろ試したのですが、うまくいきません(泣) ↓参考にしたURLです↓ http://www.tagindex.com/html_tag/link/a_url_id.html 宜しくお願いします。

    • ベストアンサー
    • HTML
  • HTMLのinputタグ数が変わる場合のjavascript処理

    パターンA ~HTML~ <input type='text' name='a[]'> <input type='text' name='a[]'> ~JavaScript~ var n = document.form1.elements["a"][0].value ; var n = document.form1.elements["a"][1].value ; パターンB ~HTML~ <input type='text' name='a[]'> ~JavaScript~ var n = document.form1.elements["a"][0].value ; ---(1) パターンAではエラーが出ないのですが、パターンBでは(1)のところでエラーになってしまいます。 【elements["a"][0]】の部分を【elements["a"]】とすればエラーは出ません。 どうやら、inputタグが1つしかない場合は、Javascriptでは配列として認識しないようです。 できれば、inputタグが1つの場合でも複数の場合でも、同じJavascriptコードを使いたいのですが、何か良い方法はありますか?