2287 Stimmen

Was sind gültige Werte für das Attribut id in HTML?

Bei der Erstellung des id Attribute für HTML-Elemente, welche Regeln gibt es für den Wert?

119 Stimmen

Dies unterscheidet sich zwischen HTML5 und früheren Versionen der Spezifikation. Ich habe es hier erklärt: mathiasbynens.be/notes/html5-id-class

5 Stimmen

Mir ist aufgefallen, dass SharePoint 2010 einen Wert wie diesen - {8CC7EF38-31D8-4786-8C20-7E6D56E49AE2}-{E60CE5E2-6E64-4350-A884-654B72DA5A53} für eine dynamisch generierte Tabelle innerhalb eines Webparts zuweist und eine Seite, die einen ID-Wert dieser Art enthält, in keinem der gängigen Browser bricht. Der Umgang mit solchen ID-Werten über JavaScript ist allerdings schwierig - mvark.blogspot.in/2012/07/

4 Stimmen

HTML4- und HTML5-Anforderungen für ID Werte sind sehr unterschiedlich. Hier ist eine schnelle und vollständige Übersicht über HTML5 ID Regeln: stackoverflow.com/a/31773673/3597276

1889voto

dgvid Punkte 25475

Für HTML 4 lautet die Antwort technisch:

ID- und NAME-Token müssen mit einem Buchstaben ([A-Za-z]) beginnen und können von einer beliebigen Anzahl von Buchstaben, Ziffern ([0-9]), Bindestrichen ("-"), Unterstrichen ("_"), Doppelpunkten (":") und Punkten (".") gefolgt werden.

HTML 5 ist noch freizügiger und besagt nur, dass eine id mindestens ein Zeichen und keine Leerzeichen enthalten darf.

Das Attribut id unterscheidet Groß- und Kleinschreibung in XHTML .

Aus rein praktischen Gründen sollten Sie bestimmte Zeichen vermeiden. Punkte, Doppelpunkte und '#' haben in CSS-Selektoren eine besondere Bedeutung, daher müssen Sie diese Zeichen mit einem Backslash in CSS oder ein doppelter Backslash in einer Selektor-String, der an jQuery übergeben wird . Überlegen Sie sich, wie oft Sie in Ihren Stylesheets oder Ihrem Code ein Zeichen auslassen müssen, bevor Sie sich mit Punkten und Doppelpunkten in IDs verrückt machen.

Zum Beispiel die HTML-Deklaration <div id="first.name"></div> gültig ist. Sie können dieses Element in CSS auswählen als #first\.name und in jQuery wie folgt: $('#first\\.name'). Aber wenn Sie den Backslash vergessen, $('#first.name') haben Sie einen absolut gültigen Selektor, der nach einem Element mit id first und auch mit Klasse name . Dies ist ein Fehler, der leicht zu übersehen ist. Langfristig sind Sie vielleicht glücklicher, wenn Sie die id first-name (ein Bindestrich anstelle eines Punktes), stattdessen.

Sie können Ihre Entwicklungsaufgaben vereinfachen, indem Sie sich strikt an eine Namenskonvention halten. Wenn Sie zum Beispiel nur Kleinbuchstaben verwenden und Wörter immer entweder mit Bindestrichen oder Unterstrichen trennen (aber nicht beides, wählen Sie eines und verwenden Sie nie das andere), dann haben Sie ein leicht zu merkendes Muster. Sie werden sich nie fragen "war es firstName o FirstName ?", denn Sie werden immer wissen, dass Sie Folgendes eingeben sollten first_name . Bevorzugen Sie Kamelkoffer? Dann beschränken Sie sich darauf, keine Bindestriche oder Unterstriche, und verwenden Sie für den ersten Buchstaben immer entweder Groß- oder Kleinschreibung, mischen Sie sie nicht.


Ein mittlerweile sehr obskures Problem war, dass mindestens ein Browser, Netscape 6, id-Attributwerte wurden fälschlicherweise unter Berücksichtigung der Groß- und Kleinschreibung behandelt . Das bedeutete, dass Sie bei der Eingabe von id="firstName" in Ihrem HTML (Kleinbuchstaben 'f') und #FirstName { color: red } in Ihrem CSS (Großbuchstabe "F"), hätte dieser fehlerhafte Browser die Farbe des Elements nicht auf Rot gesetzt. Zum Zeitpunkt dieser Bearbeitung, April 2015, hoffe ich, dass Sie nicht aufgefordert werden, Netscape 6 zu unterstützen. Betrachten Sie dies als eine historische Fußnote.

84 Stimmen

Beachten Sie, dass die Attribute class und id sind Groß- und Kleinschreibung wird in XHTML beachtet, bei allen anderen Attributen ist dies nicht der Fall. Eric Meyer erwähnte dies in einem CSS-Workshop, an dem ich teilnahm.

37 Stimmen

Beachten Sie auch, dass es nicht funktioniert, wenn Sie versuchen, eine CSS-Regel zu schreiben, um ein Element nach seiner ID auszuwählen, und die ID mit einer Zahl beginnt. Schade!

56 Stimmen

Was '.' oder ':' in einer ID mit jQuery angeht, siehe jQuery FAQ . Sie enthält eine kleine Funktion, die das notwendige Escaping durchführt.

239voto

Peter Hilton Punkte 16948

より HTML 4-Spezifikation :

ID- und NAME-Token müssen mit einem Buchstaben ([A-Za-z]) beginnen und können von einer beliebigen Anzahl von Buchstaben, Ziffern ([0-9]), Bindestrichen ("-"), Unterstrichen ("_"), Doppelpunkten (":") und Punkten (".") gefolgt werden.

Ein häufiger Fehler ist die Verwendung einer ID, die mit einer Ziffer beginnt.

25 Stimmen

Beachten Sie, dass HTML5 viel mehr erlaubt als HTML4, siehe zum Beispiel 456bereastreet.com/archive/201011/ et w3.org/TR/html5/elements.html#das-id-attribut

176voto

Michael Thompson Punkte 3971

Sie können technisch gesehen Doppelpunkte und Punkte in id/name-Attributen verwenden, aber ich würde dringend empfehlen, beides zu vermeiden.

In CSS (und einigen JavaScript-Bibliotheken wie jQuery) haben sowohl der Punkt als auch der Doppelpunkt eine besondere Bedeutung, und Sie werden Probleme bekommen, wenn Sie nicht vorsichtig sind. Punkte sind Klassenselektoren und Doppelpunkte sind Pseudoselektoren (z. B. ":hover" für ein Element, wenn sich die Maus darüber befindet).

Wenn Sie einem Element die ID "my.cool:thing" geben, sieht Ihr CSS-Selektor wie folgt aus:

#my.cool:thing { ... /* some rules */ ... }

Das heißt in der CSS-Sprache: "das Element mit der ID 'my', der Klasse 'cool' und dem Pseudoselektor 'thing'".

Bleiben Sie bei A-Z, Zahlen, Unterstrichen und Bindestrichen. Und wie bereits gesagt, achten Sie darauf, dass Ihre IDs eindeutig sind.

Das sollte Ihre erste Sorge sein.

27 Stimmen

Sie können Doppelpunkte und Punkte verwenden - aber Sie müssen sie mit doppelten Backslashes abtrennen, z.B.: $('#my \\.cool\\ :thing') oder eine Variable ausklammern: $('#'+id.replace(/ \. /,' \\. ').replace(/\:/,' \\ :')) groups.google.com/group/jquery-de/browse_thread/thread/

0 Stimmen

81voto

Michael Benjamin Punkte 302119

HTML5: Erlaubte Werte für ID- und Klassenattribute

Ab HTML5 sind die einzigen Einschränkungen für den Wert einer ID:

  1. muss im Dokument eindeutig sein
  2. darf keine Leerzeichen enthalten
  3. muss mindestens ein Zeichen enthalten

Für Klassen gelten ähnliche Regeln (abgesehen von der Einzigartigkeit natürlich).

Der Wert kann also aus allen Ziffern, nur aus einer Ziffer, nur aus Satzzeichen, aus Sonderzeichen oder aus anderen Zeichen bestehen. Nur keine Leerzeichen. Das ist ein großer Unterschied zu HTML4.

In HTML 4 müssen ID-Werte mit einem Buchstaben beginnen, auf den nur Buchstaben, Ziffern, Bindestriche, Unterstriche, Doppelpunkte und Punkte folgen dürfen.

In HTML5 sind diese gültig:

<div id="999"> ... </div>
<div id="#%LV-||"> ... </div>
<div id="____V"> ... </div>
<div id=""> ... </div>
<div id=""> ... </div>
<div id="{}"> ... </div>
<div id="©"> ... </div>
<div id="¤€~¥"> ... </div>

Denken Sie daran, dass die Verwendung von Zahlen, Satzzeichen oder Sonderzeichen im Wert einer ID in anderen Kontexten (z. B. CSS, JavaScript, Regex) zu Problemen führen kann.

Zum Beispiel ist die folgende ID in HTML5 gültig:

<div id="9lions"> ... </div>

In CSS ist sie jedoch ungültig:

Aus der CSS2.1-Spezifikation:

4.1.3 Zeichen und Gehäuse

In CSS, Kennungen (einschließlich Elementnamen, Klassen und IDs in Selektoren) können nur die Zeichen [a-zA-Z0-9] und ISO 10646 Zeichen U+00A0 und höher, sowie den Bindestrich (-) und den Unterstrich (_); sie dürfen nicht mit einer Ziffer, zwei Bindestrichen oder einem Bindestrich beginnen gefolgt von einer Ziffer .

In den meisten Fällen können Sie Zeichen in Kontexten, in denen sie Einschränkungen oder eine besondere Bedeutung haben, ausblenden.


W3C-Referenzen

HTML5

3.2.5.1 Die id Attribut

El id Attribut gibt den eindeutigen Bezeichner (ID) des Elements an.

Der Wert muss unter allen IDs im Home-Teilbaum des Elements eindeutig sein Teilbaum des Elements eindeutig sein und muss mindestens ein Zeichen enthalten. Der Wert darf keine keine Leerzeichen enthalten.

Hinweis: Es gibt keine weiteren Einschränkungen hinsichtlich der Form einer ID; insbesondere Insbesondere können IDs nur aus Ziffern bestehen, mit einer Ziffer beginnen, mit mit einem Unterstrich beginnen, nur aus Satzzeichen bestehen, usw.

3.2.5.7 Die class Attribut

Das Attribut, sofern angegeben, muss einen Wert haben, der eine Reihe von durch Leerzeichen getrennten Token bestehen, die die verschiedenen Klassen repräsentieren, zu denen das Element zugehört.

Die Klassen, die einem HTML-Element zugewiesen sind, bestehen aus allen den Klassen, die zurückgegeben werden, wenn der Wert des Attributs class durch Leerzeichen. (Duplikate werden ignoriert.)

Es gibt keine zusätzlichen Einschränkungen für die Token, die Autoren in Attribut verwenden können, aber die Autoren werden ermutigt, Werte zu verwenden, die die die Natur des Inhalts beschreiben, anstatt Werte zu verwenden, die die gewünschte Darstellung des Inhalts beschreiben.

73voto

Álvaro González Punkte 134708

JQuery tut jeden gültigen ID-Namen behandeln. Sie müssen lediglich Metazeichen (d.h. Punkte, Semikolons, eckige Klammern...) ausschließen. Das ist so, als würde man sagen, dass JavaScript ein Problem mit Anführungszeichen hat, nur weil man nicht schreiben kann

var name = 'O'Hara';

Selektoren in der jQuery-API (siehe Anmerkung unten)

1 Stimmen

Dies ist ein Kommentar zu einer anderen Antwort und stellt keinen Versuch dar, die ursprüngliche Frage zu beantworten.

1 Stimmen

@Sean Damals wurde die Frage als jQuery getaggt. In der Tat, es macht jetzt wenig Sinn. Aber, um ehrlich zu sein, kann ich mich nicht erinnern, was ich vor 13 Jahren im Sinn hatte.

0 Stimmen

Ha - mein Fehler. Ich hätte auf das Datum schauen sollen, bevor ich einen Kommentar abgab.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X