Ich verstehe, dass eine ID innerhalb einer HTML / XHTML-Seite eindeutig sein muss.
Meine Frage ist, ob ich einem bestimmten Element mehrere IDs zuweisen kann.
<div id="nested_element_123 task_123"></div>
Mir ist klar, dass ich eine einfache Lösung habe, wenn ich einfach eine Klasse benutze. Ich bin nur neugierig darauf, IDs auf diese Weise zu verwenden.
html
xhtml
standards-compliance
Webmat
quelle
quelle
Antworten:
Aus der XHTML 1.0-Spezifikation
quelle
Im Gegensatz zu allen anderen lautet die richtige Antwort JA
Die Selectors-Spezifikation ist diesbezüglich sehr klar:
Bearbeiten
Zur Verdeutlichung: Ja, ein XHTML-Element kann mehrere IDs haben, z
Das Zuweisen mehrerer IDs zu demselben
id
Attribut mithilfe einer durch Leerzeichen getrennten Liste ist jedoch nicht möglich.quelle
This specification doesn't preclude an element having multiple IDs, if other mechanisms (e.g. DOM Core methods) can set an element's ID in a way that doesn't conflict with the id attribute.
(was den CSS-Spezifikationen entspricht)id
Attribut zuweisen dürfen . Zur Verdeutlichung ist dasxml:id
Attribut (und tatsächlich jedes Attribut außerhalb des Standardnamespace) in XHTML nicht gültig. Wie Sie jedoch aus der HTML5-Spezifikation zitieren, führt dies in keiner Weisexml:id="bar"
zu einem stillschweigenden Fehlschlag. Es wird weiterhin diebar
ID zu diesem Element hinzugefügt , sodass es übereinstimmt#bar
.Mein Verständnis war schon immer:
IDs sind zum einmaligen Gebrauch bestimmt und werden nur auf ein Element angewendet ...
Klassen können mehrmals verwendet werden ...
quelle
Nein. Während die Definition von w3c für HTML 4 Ihre Frage nicht explizit abzudecken scheint, enthält die Definition des Attributs name und id keine Leerzeichen im Bezeichner:
quelle
Nein. Jedes DOM-Element hat, wenn es eine ID hat, eine einzelne, eindeutige ID. Sie könnten es mit so etwas wie:
und verwenden Sie dann die Navigation, um das zu erhalten, was Sie wirklich wollen.
Wenn Sie nur Stile anwenden möchten, sind Klassennamen besser.
quelle
Sie können nur eine ID pro Element haben, aber Sie können tatsächlich mehr als eine Klasse haben. Haben Sie jedoch nicht mehrere Klassenattribute, sondern fügen Sie mehrere Klassenwerte in ein Attribut ein.
ist vollkommen legal.
quelle
Nein, Sie können nicht mehrere IDs für ein einzelnes Tag haben, aber ich habe ein Tag mit einem
name
Attribut und einemid
Attribut gesehen, die von einigen Anwendungen gleich behandelt werden.quelle
Nein, Sie sollten verschachtelte DIVs verwenden, wenn Sie diesen Pfad beschreiten möchten. Stellen Sie sich außerdem die Verwirrung vor, die beim Ausführen von document.getElementByID () entstehen würde. Welche ID wird es holen, wenn es mehrere gibt?
Zu einem leicht verwandten Thema können Sie einem DIV mehrere Klassen hinzufügen . Siehe Eric Myers Diskussion unter,
http://meyerweb.com/eric/articles/webrev/199802a.html
quelle
getElementById();
macht nichts ohne eine Zeichenfolge, die angibt, was zu bekommen ist?!getElementById('foo');
bekomme das Element mit foo als ID! Mehrere IDs wären hier nicht wichtig. Es würde immer noch nach "foo" suchen.quelle
http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2
und
"ID" muss also eindeutig sein und darf kein Leerzeichen enthalten.
quelle
Ich möchte technisch ja sagen, da das, was wirklich gerendert wird, technisch immer browserabhängig ist. Die meisten Browser versuchen, die Spezifikationen so gut wie möglich einzuhalten, und soweit ich weiß, enthält die CSS-Spezifikation nichts dagegen. Ich werde nur für den tatsächlichen HTML-, CSS- und Javascript-Code bürgen, der an den Browser gesendet wird, bevor ein anderer Interpreter eingreift.
Ich sage jedoch auch nein, da jeder Browser, auf dem ich normalerweise teste, Sie nicht zulässt. Wenn Sie sich selbst davon überzeugen müssen, speichern Sie Folgendes als HTML-Datei und öffnen Sie es in den wichtigsten Browsern. In allen Browsern, die ich mit der Javascript-Funktion getestet habe, stimmt sie nicht mit einem Element überein. Entfernen Sie jedoch entweder "hunkojunk" aus dem ID-Tag und alles funktioniert einwandfrei. Beispielcode
quelle
Nein.
Trotzdem hindert Sie nichts daran, es zu tun. Bei den verschiedenen Browsern tritt jedoch ein inkonsistentes Verhalten auf. Tu es nicht. 1 ID pro Element.
Wenn Sie einem Element mehrere Zuweisungen wünschen, verwenden Sie Klassen (durch ein Leerzeichen getrennt).
quelle
Das ist interessant, aber soweit ich weiß, ist die Antwort ein festes Nein. Ich verstehe nicht, warum Sie eine verschachtelte ID benötigen, da Sie diese normalerweise mit einem anderen Element kreuzen, das dieselbe verschachtelte ID hat. Wenn Sie es nicht tun, gibt es keinen Grund, wenn Sie es tun, gibt es immer noch sehr wenig Sinn.
quelle
Ich weiß, dass dies ein Jahr alt ist, aber ich war selbst neugierig darauf und ich bin sicher, dass andere hier ihren Weg finden werden. Die einfache Antwort ist nein, wie andere vor mir gesagt haben. Ein Element kann nicht mehr als eine ID haben und eine ID kann nicht mehr als einmal auf einer Seite verwendet werden. Probieren Sie es aus und Sie werden sehen, wie gut es ist nicht funktioniert.
Als Antwort auf die Antwort von tvanfosson bezüglich der Verwendung derselben ID in zwei verschiedenen Elementen. Soweit mir bekannt ist, kann eine ID nur einmal auf einer Seite verwendet werden, unabhängig davon, ob sie an ein anderes Tag angehängt ist.
Per Definition sollte ein Element, das eine ID benötigt, eindeutig sein. Wenn Sie jedoch zwei IDs benötigen, ist es nicht wirklich eindeutig und benötigt stattdessen eine Klasse.
quelle
Klassen sind speziell dafür gemacht, hier ist der Code, aus dem Sie verstehen können
quelle
Nein.
https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
id="a b"
<- finde das Leerzeichen in diesem VaLuE .Sie können jedoch mehrere IDs formatieren. Aber wenn Sie der Spezifikation folgen, lautet die Antwort nein.
quelle
IDs sollten eindeutig sein, daher sollten Sie eine bestimmte ID nur einmal auf einer Seite verwenden. Klassen können wiederholt verwendet werden.
Weitere Informationen finden Sie unter https://www.w3schools.com/html/html_id.asp .
quelle
Ich glaube nicht, dass du zwei Ausweise haben kannst, aber es sollte möglich sein. Die zweimalige Verwendung derselben ID ist ein anderer Fall ... wie bei zwei Personen, die denselben Pass verwenden. Eine Person könnte jedoch mehrere Pässe haben ... Ich habe danach gesucht, da ich eine Situation habe, in der ein einzelner Mitarbeiter mehrere Funktionen haben kann. Wenn Sie "sysadm" und "Teamkoordinator" mit der ID = "sysadm teamcoordinator" sagen, kann ich sie von anderen Seiten aus referenzieren, sodass employee.html # sysadm und employee.html # teamcoordinator zum selben Ort führen ... Eines Tages jemand Andernfalls könnte die Funktion des Teamkoordinators übernommen werden, während der Systemadministrator der Systemadministrator bleibt. Dann muss ich nur die IDs auf der Seite employee.html ändern. Aber wie gesagt, es funktioniert nicht :(
quelle