349

ID は HTML/XHTML ページ内で一意でなければならないことを理解しています。

特定の要素に複数の ID を割り当てることはできますか?

<div id="nested_element_123 task_123"></div>

クラスを使用するだけで簡単に解決できることがわかりました。このようにIDを使用することに興味があります。

4

18 に答える 18

222

いいえ。XHTML 1.0 仕様から

XML では、フラグメント ID は ID 型であり、要素ごとに ID 型の属性は 1 つしか存在できません。したがって、XHTML 1.0 では、id 属性は ID 型として定義されています。XHTML 1.0 ドキュメントが適切に構造化された XML ドキュメントであることを保証するために、XHTML 1.0 ドキュメントは、上記の要素にフラグメント識別子を定義するときに id 属性を使用する必要があります。XHTML ドキュメントをメディア タイプ text/html として提供する際に、そのようなアンカーが下位互換性を持つようにする方法については、HTML 互換性ガイドラインを参照してください。

于 2008-10-10T16:09:16.577 に答える
209

他のみんなが言ったこととは反対に、正解はイエスです

セレクターの仕様は、これについて非常に明確です。

要素に複数のID属性がある場合、IDセレクターの目的では、それらすべてをその要素のIDとして扱う必要があります。このような状況は、xml:id、DOM3 Core、XML DTD、および名前空間固有の組み合わせを使用して達成できます。知識。


編集

明確にするために:はい、XHTML要素は複数のIDを持つことができます。

<p id="foo" xml:id="bar">

idただし、スペースで区切られたリストを使用して同じ属性に複数のIDを割り当てることはできません。

于 2011-04-16T07:53:16.787 に答える
28

私の理解は常に次のとおりです。

  • IDは使い捨てであり、1つの要素にのみ適用されます。

    • それぞれは、(唯一の)単一の要素に一意の識別子として割り当てられます
  • クラスは複数回使用できます...

    • したがって、これらは複数の要素に適用でき、同様に、さらに異なる場合は、要素ごとに複数のクラス(つまり、複数のクラス)が存在する可能性があります。
于 2008-10-10T16:13:22.683 に答える
27

いいえ。HTML 4 のW3C から の定義はあなたの質問を明示的にカバーしていないようですが、 name および id 属性の定義では、識別子にスペースがないと述べています。

ID および NAME トークンは文字 ([A-Za-z]) で始まり、その後に任意の数の文字、数字 ([0-9])、ハイフン ("-")、アンダースコア ("_") が続く場合があります、コロン (":")、およびピリオド (".")。

于 2008-10-10T16:10:35.467 に答える
20

要素ごとに 1 つの ID しか持てませんが、実際には複数のクラスを持つことができます。ただし、複数のクラス属性を持たないでください。複数のクラス値を 1 つの属性に入れます。

<div id="foo" class="bar baz bax">

完全に合法です。

于 2008-10-10T23:14:43.317 に答える
20

いいえ。すべての DOM 要素に ID がある場合、一意の ID が 1 つあります。次のようなものを使用して概算できます。

<div id='enclosing_id_123'><span id='enclosed_id_123'></span></div>

次に、ナビゲーションを使用して、本当に必要なものを取得します。

スタイルを適用するだけの場合は、クラス名の方が適しています。

于 2008-10-10T16:11:23.250 に答える
4

いいえ、そのパスをたどりたい場合は、ネストされたDIVを使用する必要があります。さらに、可能であっても、document.getElementByID()を実行するときに混乱が生じることを想像してみてください。複数のIDがある場合、どのIDを取得しますか?

少し関連するトピックでは、DIVに複数のクラスを追加できます。エリックマイヤーズの議論を参照してください、

http://meyerweb.com/eric/articles/webrev/199802a.html

于 2008-10-10T16:17:01.290 に答える
4

いいえ、1 つのタグに複数の ID を設定することはできませんが、一部のアプリケーションで同じように扱われる属性nameと属性を持つタグを見たことがあります。id

于 2008-10-10T16:08:52.473 に答える
3

レンダリングされるものは技術的に常にブラウザに依存するため、技術的にはイエスと言いたいです。ほとんどのブラウザーは、できる限り仕様を守ろうとしますが、私が知る限り、CSS 仕様にはそれを妨げるものは何もありません。ここでは、他のインタープリターが介入する前にブラウザーに送信される実際の HTML、CSS、および JavaScript コードについてのみ保証します。

ただし、私が通常テストするすべてのブラウザでは実際には許可されないため、ノーとも言います。

ご自身で確認する必要がある場合は、以下を .html ファイルとして保存し、主要なブラウザーで開いてください。私がテストしたすべてのブラウザーで、JavaScript 関数は要素に一致しません。ただし、id タグから「hunkojunk」のいずれかを削除すると、すべて正常に動作します。

サンプルコード

<html>
<head>
</head>
<body>
    <p id="hunkojunk1 hunkojunk2"></p>

    <script type="text/javascript">
        document.getElementById('hunkojunk2').innerHTML = "JUNK JUNK JUNK JUNK JUNK JUNK";
    </script>
</body>
</html>
于 2012-04-18T18:21:17.190 に答える
2

7.5.2要素識別子から:idおよびclass属性:

id 属性は、一意の識別子を要素に割り当てます(これは SGML パーサーによって検証される場合があります)。

ID および NAME トークンは文字 ([A-Za-z]) で始まり、その後に任意の数の文字、数字 ([0-9])、ハイフン ("-")、アンダースコア ("_") が続く場合があります、コロン (":")、およびピリオド (".")。

したがって、「id」は一意である必要があり、スペースを含めることはできません。

于 2013-08-13T13:41:41.033 に答える
1

他の人が私の前に言ったように、簡単な答えはノーです。要素に複数のIDを含めることはできず、1つのページでIDを複数回使用することはできません。試してみると、うまく機能しないことがわかります。

2つの異なる要素での同じIDの使用に関するtvanfossonの回答に応えて。私の知る限り、IDは、別のタグに付けられているかどうかに関係なく、ページ内で1回しか使用できません。

定義上、IDを必要とする要素は一意である必要がありますが、2つのIDが必要な場合、それは実際には一意ではなく、代わりにクラスが必要です。

于 2010-04-20T11:40:02.187 に答える
1

いいえ。

そうは言っても、あなたがそれをするのを止めるものは何もありません。ただし、さまざまなブラウザーで一貫性のない動作が発生します。やらないでください。要素ごとに 1 つの ID。

要素への複数の割り当てが必要な場合は、クラスを使用します (スペースで区切ります)。

于 2015-04-25T17:54:01.300 に答える
0

それは興味深いことですが、私の知る限り、答えは断固としてノーです。通常、同じネストされた ID を持つ別の要素と交差するため、ネストされた ID が必要な理由がわかりません。しなければ意味がありませんし、したとしてもほとんど意味がありません。

于 2008-10-10T16:06:59.263 に答える
-2

2 つの ID を持つことはできないと思いますが、可能なはずです。同じ ID を 2 回使用するのは別のケースです... 2 人が同じパスポートを使用するようなものです。しかし、1 人が複数のパスポートを持っている可能性があります... 1 人の従業員が複数の機能を持つことができる状況があるため、これを探しに来ました。たとえば、id="sysadm teamcoordinator" を持つ "sysadm" と "team coordinator" を他のページから参照できるようにすると、employees.html#sysadm と employees.html#teamcoordinator が同じ場所につながるようになります... ある日誰かがそうでなければ、sysadm が sysadm のままである間に、チーム コーディネーターの機能を引き継ぐ可能性があります。

于 2010-09-13T10:53:52.413 に答える