IDはHTML / XHTMLページ内で一意でなければならないことを理解しています。
私の質問は、特定の要素に対して、複数のIDを割り当てることができるかどうかです。
<div id="nested_element_123 task_123"></div>
クラスを使用するだけの簡単な解決策があることに気づきました。この方法でIDを使用することに興味があります。
IDはHTML / XHTMLページ内で一意でなければならないことを理解しています。
私の質問は、特定の要素に対して、複数のIDを割り当てることができるかどうかです。
<div id="nested_element_123 task_123"></div>
クラスを使用するだけの簡単な解決策があることに気づきました。この方法でIDを使用することに興味があります。
回答:
XMLでは、フラグメント識別子はタイプIDであり、要素ごとにタイプIDの単一の属性のみが存在できます。したがって、XHTML 1.0では、id属性はタイプIDとして定義されています。XHTML 1.0ドキュメントが適切に構造化されたXMLドキュメントであることを保証するために、XHTML 1.0ドキュメントは、上記の要素にフラグメント識別子を定義するときにid属性を使用する必要があります。XHTMLドキュメントをメディアタイプtext / htmlとして提供する場合に、このようなアンカーに下位互換性を確保する方法については、HTML互換性ガイドラインを参照してください。
他の誰もが言ったことに反して、正しい答えはYESです
セレクタ仕様このことについて非常に明確です:
要素に複数のID属性がある場合、IDセレクターの目的のために、それらすべてをその要素のIDとして扱う必要があります。このような状況は、xml:id、DOM3 Core、XML DTD、および名前空間固有の組み合わせを使用して達成できます知識。
編集する
明確にするために:はい、XHTML要素は複数のIDを持つことができます。
<p id="foo" xml:id="bar">
ただしid
、スペースで区切られたリストを使用して同じ属性に複数のIDを割り当てることはできません。
id
xml:id
xml:id="bar"
bar
#bar
私の理解は常にされています:
IDは使い捨てで、1つの要素にのみ適用されます...
クラスは複数回使用できます...
いいえ。HTML4のw3cから の定義はあなたの質問を明示的にカバーしていないようですが、nameおよびid属性の定義には、識別子にスペースが含まれていません。
IDトークンとNAMEトークンは文字([A-Za-z])で始まり、その後に任意の数の文字、数字([0-9])、ハイフン( "-")、アンダースコア( "_")を続けることができます、コロン( ":")、およびピリオド( "。")。
いいえ。すべてのDOM要素には、IDがある場合、単一の一意のIDがあります。あなたは次のようなものを使用してそれを概算することができます:
<div id='enclosing_id_123'><span id='enclosed_id_123'></span></div>
ナビゲーションを使用して、本当に欲しいものを取得します。
スタイルを適用するだけの場合は、クラス名の方が適しています。
要素ごとに1つのIDしか持てませんが、実際には複数のクラスを持つことができます。ただし、複数のクラス属性を持たないでください。複数のクラス値を1つの属性に入れてください。
<div id="foo" class="bar baz bax">
完全に合法です。
1つのタグに複数のIDを設定することはできませんが、一部のアプリケーションで同じように扱われるname
属性と属性を持つタグを見ましたid
。
いいえ、そのパスを下に移動する場合は、ネストされたDIVを使用する必要があります。さらに、可能であれば、document.getElementByID()を実行したときに混乱が発生することを想像してください。複数のIDがある場合、どのIDを取得しますか?
少し関連するトピックとして、DIVに複数のクラスを追加できます。エリックマイヤーズの議論を参照してください、
getElementById();
何を取得するかを指定する文字列がなければ何もしませんか?!getElementById('foo');
IDとしてfooを持つ要素を取得します!ここでは複数のIDは関係ありません。それでも「foo」を探します。
Any ID assigned to a div element is unique.
However, you can assign multiple IDs "under", and not "to" a div element.
In that case, you have to represent those IDs as <span></span> IDs.
Say, you want two links in the same HTML page to point to the same div element in the page.
The two different links
<p><a href="#exponentialEquationsCalculator">Exponential Equations</a></p>
<p><a href="#logarithmicExpressionsCalculator"><Logarithmic Expressions</a></p>
Point to the same section of the page.
<!-- Exponential / Logarithmic Equations Calculator -->
<div class="w3-container w3-card white w3-margin-bottom">
<span id="exponentialEquationsCalculator"></span>
<span id="logarithmicEquationsCalculator"></span>
</div>
http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2
id属性は、一意の識別子を要素に割り当てます(これはSGMLパーサーによって検証される場合があります)。
そして
IDトークンとNAMEトークンは文字([A-Za-z])で始まり、その後に任意の数の文字、数字([0-9])、ハイフン( "-")、アンダースコア( "_")を続けることができます、コロン( ":")、およびピリオド( "。")。
したがって、「id」は一意である必要があり、スペースを含めることはできません。
実際にレンダリングされる内容は技術的には常にブラウザに依存するため、技術的には「はい」と言いたいです。ほとんどのブラウザは、できる限り仕様を維持しようとしますが、私が知る限り、それに対する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>
私はこれが1歳であることを知っていますが、私自身もこれに興味を持っていたので、他の人もここにいると思います。他の人が私の前に言ったように、単純な答えはノーです。1つの要素に複数のIDを含めることはできません。また、1つのIDをページで複数回使用することはできません。試してみると、うまくいかないことがわかります。
2つの異なる要素での同じIDの使用に関するtvanfossonの回答に応じて。私が知っている限り、IDは別のタグに添付されているかどうかに関係なく、ページ内で1回だけ使用できます。
定義により、IDを必要とする要素は一意である必要がありますが、2つのIDが必要な場合は、実際には一意ではなく、代わりにクラスが必要です。
クラスはこれのために特別に作られています、これはあなたが理解できるコードです
<html>
<head>
<style type="text/css">
.personal{
height:100px;
width: 100px;
}
.fam{
border: 2px solid #ccc;
}
.x{
background-color:#ccc;
}
</style>
</head>
<body>
<div class="personal fam x"></div>
</body>
</html>
いや。
https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
値にスペース文字を含めることはできません。
id="a b"
<-そのVaLuEでスペース文字を検索します。
つまり、複数のIDにスタイルを設定できます。しかし、仕様に従っている場合、答えはノーです。
IDは一意でなければならないため、特定のIDをページで1回だけ使用する必要があります。クラスは繰り返し使用できます。
詳細については、https://www.w3schools.com/html/html_id.aspを確認してください。
私はあなたが2つのIDを持つことができるとは思いませんが、それは可能であるべきです。同じIDを2回使用するのは別のケースです... 2人が同じパスポートを使用するようなものです。しかし一人で複数のパスポートを持つことができます...私は一人の従業員がいくつかの機能を持つことができる状況があるのでこれを探しに来ました。id = "sysadm teamcoordinator"を持つ "sysadm"と "team coordinator"が他のページから参照できるようにして、employees.html#sysadmとemployees.html#teamcoordinatorが同じ場所につながるようにします...ある日誰かそうでなければ、sysadmがsysadmのままでチームコーディネーター機能を引き継ぐ可能性があります...その後、employees.htmlページのIDを変更するだけでよいのです...