Zauważyłem, że SharePoint 2010 przypisuje taką wartość - {8CC7EF38-31D8-4786-8C20-7E6D56E49AE2} - {E60CE5E2-6E64-4350-A884-654B72DA5A53} dla dynamicznie generowanej tabeli w składniku Web Part i stronie zawierającej wartość identyfikatora tego rodzaju nie zepsuło się w żadnej z popularnych przeglądarek. Radzenie sobie z takimi wartościami identyfikatorów za pomocą JavaScript jest trudne - mvark.blogspot.in/2012/07/...
Uwaga: Postępowanie zgodne z niektórymi odpowiedziami i użycie kropki ( **.**)z jQuery wpędzi Cię w sporo kłopotów, na przykład użycie, <input id="me.name" />a następnie $("#me.name").val()spowoduje, że jQuery będzie szukał <me>znacznika z klasą .name, którego nikt nie chce naprawdę!
Can O 'Spam
3
@SamSwift 웃 Nie, po prostu musisz uciec od znaków specjalnych, jak mówią doktorzy . Sprawdź to demo online .
Tokeny ID i NAZWA muszą zaczynać się od litery ([A-Za-z]), po której może następować dowolna liczba liter, cyfr ([0-9]), łączników („-”), podkreślników („_”) , dwukropki („:”) i kropki („.”).
HTML 5 jest jeszcze bardziej liberalny, mówiąc tylko, że identyfikator musi zawierać co najmniej jeden znak i nie może zawierać znaków spacji.
W atrybucie id rozróżniana jest wielkość liter w XHTML .
Ze względów czysto praktycznych możesz unikać pewnych postaci. Kropki, dwukropki i „#” mają specjalne znaczenie w selektorach CSS, więc będziesz musiał uciec od tych znaków za pomocą odwrotnego ukośnika w CSS lub podwójnego odwrotnego ukośnika w ciągu selektora przekazanym do jQuery . Zastanów się, jak często będziesz musiał uciekać przed postacią z arkuszy stylów lub kodu, zanim oszalejesz z kropkami i dwukropkami w identyfikatorach.
Na przykład deklaracja HTML <div id="first.name"></div>jest ważna. Możesz wybrać ten element w CSS jako #first\.namei w jQuery w następujący sposób: $('#first\\.name').Ale jeśli zapomnisz odwrotnego ukośnika, $('#first.name')będziesz miał doskonale poprawny selektor szukający elementu o identyfikatorze, firsta także posiadający klasę name. Jest to błąd, który łatwo przeoczyć. Na dłuższą metę możesz być szczęśliwszy, wybierając first-namezamiast identyfikatora (łącznik zamiast kropki).
Możesz uprościć zadania programistyczne, ściśle przestrzegając konwencji nazewnictwa. Na przykład, jeśli ograniczysz się całkowicie do małych liter i zawsze oddzielasz słowa myślnikami lub podkreślnikami (ale nie oba, wybierz jedno i nigdy nie używaj drugiego), to masz łatwy do zapamiętania wzór. Nigdy nie będziesz się zastanawiać „ firstNameczy to było FirstName?” ponieważ zawsze będziesz wiedział, że powinieneś pisać first_name. Wolisz futerał na wielbłądy? Zatem ogranicz się do tego, bez myślników ani podkreślników i zawsze konsekwentnie używaj wielkich lub małych liter dla pierwszej postaci, nie mieszaj ich.
Bardzo niejasnym problemem było to, że co najmniej jedna przeglądarka, Netscape 6, nieprawidłowo traktowała wartości atrybutów id jako rozróżniające wielkość liter . Oznaczało to, że gdybyś wpisał id="firstName"swój HTML (małe litery „f”) i #FirstName { color: red }CSS (wielkie litery „F”), ta błędna przeglądarka nie ustawiłaby koloru elementu na czerwony. Mam nadzieję, że w momencie tej edycji, kwiecień 2015 r., Nie zostaniesz poproszony o wsparcie Netscape 6. Rozważ to jako historyczny przypis.
Zauważ, że w atrybutach klas i id rozróżniana jest wielkość liter w XHTML, wszystkie inne atrybuty nie. Eric Meyer wspomniał o tym na warsztatach CSS, w których uczestniczyłem.
John Topley,
31
Zauważ też, że jeśli spróbujesz napisać regułę CSS, aby celować w element według ID, a istoty o numerze z numerem, to nie zadziała. Porażka!
Zack The Human
55
Jeśli chodzi o '.' lub „:” w identyfikatorze używającym jQuery, zobacz często zadawane pytania dotyczące jQuery . Zawiera małą funkcję, która wykonuje niezbędne zmiany znaczenia.
Wolfram
7
idAtrybut [ w3.org/TR/html4/struct/global.html#adef-id](case wrażliwe HTML4) i musi zaczynać się od litery (w zakresie od A do Z). Zauważ też, że twój przykład nie powinien zmieniać koloru tekstu na czerwony, ponieważ twój CSS odnosi się do elementu z klasą, a FirstNamenie do twojego id.
Augustus Kling
5
Błąd wskazany przez Augusta jest nadal obecny. W twoim przykładzie, jeśli masz id="firstName"HTML 4 lub HTML 5 i #FirstName { color: red }CSS, tylko błędna przeglądarka ustawi kolor elementu na czerwony.
Tokeny ID i NAZWA muszą zaczynać się od litery ([A-Za-z]), po której może następować dowolna liczba liter, cyfr ([0-9]), łączników („-”), podkreślników („_”) , dwukropki („:”) i kropki („.”).
Częstym błędem jest użycie identyfikatora zaczynającego się od cyfry.
IE6 nie obsługiwał identyfikatora zaczynającego się od podkreślników, ale i tak jest martwy.
doc_id
2
@rahmanisback na temat IE6, można by pomyśleć, ale kończę teraz propozycję dla banku i nalegają, aby każda aplikacja opracowana przez dostawcę działała w IE6. To jest dla 30 000 użytkowników. Cholera, gdybyśmy tylko mogli zmusić ich do zaktualizowania swoich przeglądarek na wszystkich tych komputerach, mogłoby to tylko pomóc stopie bezrobocia.
Karl
2
@Karl Przykro mi to słyszeć. Dokładaj wszelkich starań, aby ostrzegać przed problemami bezpieczeństwa IE6. Jednak IE7 wkrótce będzie nowym IE6, więc tak, wydaje się, że naszym przeznaczeniem w tej branży jest usunięcie błędów z przeszłości MS.
Możesz technicznie używać dwukropków i kropek w atrybutach id / name, ale zdecydowanie sugeruję unikanie obu.
W CSS (i kilku bibliotekach JavaScript, takich jak jQuery) zarówno kropka, jak i dwukropek mają specjalne znaczenie i jeśli nie będziesz ostrożny, napotkasz problemy. Okresy to selektory klas, a dwukropki to pseudoselektory (np. „: Hover” dla elementu, gdy wskaźnik myszy znajduje się nad nim).
Jeśli podasz elementowi identyfikator „my.cool:thing”, twój selektor CSS będzie wyglądał następująco:
#my.cool:thing { ... /* some rules */ ... }
Co tak naprawdę mówi: „element z identyfikatorem„ my ”, klasa„ cool ”i pseudo-selektor„ rzecz ”w CSS-speak.
Trzymaj się AZ każdego przypadku, liczb, podkreślników i łączników. I jak powiedziano powyżej, upewnij się, że twoje identyfikatory są unikalne.
Możesz używać dwukropków i kropek - ale musisz uciec przed nimi, używając podwójnych ukośników odwrotnych, np .: $ ('# my \\. Cool \\: thing') lub uciekając przed zmienną: $ ('#' + id.replace (/ \ ./, '\\.'). replace (/ \: /, '\\:')) groups.google.com/group/jquery-en/browse_thread/thread/…
joeformd
2
Dlaczego nie cyfry; dlaczego tylko AZ? Liczby są bardzo przydatnymi identyfikatorami, gdy odnoszą się do elementów związanych z danymi kluczowanymi liczbą, o ile nie zaczynasz od liczby.
Jeśli masz te znaki ( ., :) w identyfikatorach i nie możesz ich usunąć (kaszel ... Sharepoint), możesz obejść to w CSS z selektorami atrybutów zamiast selektorów id, np. [id='my.cool:thing']Jednak selektor ten będzie miał niższą specyficzność niż selektor id, który może powodować inne problemy.
Faust,
2
Wiem, stary, ale zaktualizowany w celu uwzględnienia liczb i cofania na łącznikach
Michael Thompson
67
jQuery ma obsługiwać dowolną poprawną nazwę ID. Musisz tylko unikać metaznaków (tj. Kropek, średników, nawiasów kwadratowych ...). To tak, jakby powiedzieć, że JavaScript ma problem z cytatami tylko dlatego, że nie możesz pisać
Lub alternatywnie: „więc lepiej byłoby uniknąć jquery”. ;)
domsson
59
HTML5:
pozbywa się dodatkowych ograniczeń atrybutu id, patrz tutaj . Pozostały tylko wymagania (oprócz tego, że są unikalne w dokumencie):
wartość musi zawierać co najmniej jeden znak (nie może być pusty)
nie może zawierać spacji.
PRE-HTML5:
Identyfikator powinien pasować:
[A-Za-z][-A-Za-z0-9_:.]*
Musi zaczynać się od znaków AZ lub az
Może zawierać -(łącznik), _(podkreślenie), :(dwukropek) i .(kropka)
ale należy unikać :i dlatego, że .:
Na przykład identyfikator może być oznaczony etykietą „ab: c” i oznaczony w arkuszu stylów jako #ab: c, ale oprócz tego, że jest to identyfikator elementu, może oznaczać identyfikator „a”, klasa „b”, pseudo- selektor „c”. Najlepiej uniknąć zamieszania i unikać używania. i: całkowicie.
HTML5: Dozwolone wartości dla identyfikatora i atrybutów klasy
Począwszy od HTML5, jedynymi ograniczeniami wartości identyfikatora są:
musi być unikalny w dokumencie
nie może zawierać żadnych spacji
musi zawierać co najmniej jeden znak
Podobne zasady mają zastosowanie do klas (z wyjątkiem oczywiście wyjątkowości).
Tak więc wartością mogą być wszystkie cyfry, tylko jedna cyfra, tylko znaki interpunkcyjne, zawierać znaki specjalne, cokolwiek. Po prostu brak białych znaków. To bardzo różni się od HTML4.
W HTML 4 wartości identyfikatora muszą zaczynać się od litery, po której mogą następować tylko litery, cyfry, łączniki, podkreślenia, dwukropki i kropki.
Pamiętaj, że używanie liczb, znaków interpunkcyjnych lub znaków specjalnych w wartości identyfikatora może powodować problemy w innych kontekstach (np. CSS, JavaScript, regex).
Na przykład następujący identyfikator jest poprawny w HTML5:
W CSS identyfikatory (w tym nazwy elementów, klasy i identyfikatory w selektorach) mogą zawierać tylko znaki [a-zA-Z0-9] i ISO 10646 znaków U + 00A0 i wyższe, a także myślnik (-) i podkreślenie ( _); nie mogą zaczynać się cyfrą, dwoma myślnikami ani myślnikiem, po których następuje cyfra .
W większości przypadków możesz uciec od znaków w kontekstach, w których mają ograniczenia lub specjalne znaczenie.
idAtrybut określa unikalny identyfikator swojego elementu (ID).
Wartość musi być unikalna wśród wszystkich identyfikatorów w poddrzewie macierzystym elementu i musi zawierać co najmniej jeden znak. Wartość nie może zawierać spacji.
Uwaga: Nie ma żadnych innych ograniczeń dotyczących formy, jaką może przyjąć identyfikator; w szczególności identyfikatory mogą składać się z samych cyfr, zaczynają się od cyfry, zaczynają się od znaku podkreślenia, składają się tylko z interpunkcji itp.
Atrybut, jeśli jest określony, musi mieć wartość będącą zbiorem tokenów oddzielonych spacjami reprezentujących różne klasy, do których należy element.
Klasy, które przypisał do niego element HTML, składają się ze wszystkich klas zwróconych, gdy wartość atrybutu class zostanie podzielona na spacje. (Duplikaty są ignorowane).
Nie ma żadnych dodatkowych ograniczeń dotyczących tokenów, których autorzy mogą używać w atrybucie klasy, ale autorzy są zachęcani do używania wartości opisujących charakter treści, a nie wartości opisujących pożądaną prezentację treści.
W praktyce wiele witryn używa idatrybutów rozpoczynających się od cyfr, mimo że technicznie nie jest to prawidłowy kod HTML.
Specyfikacja robocza HTML 5 rozluźnia reguły dla atrybutów idi name: są one teraz po prostu nieprzezroczystymi ciągami znaków, które nie mogą zawierać spacji.
Łączniki, podkreślenia, kropki, dwukropki, cyfry i litery obowiązują w CSS i JQuery. Poniższe powinno działać, ale musi być unikalne na całej stronie, a także musi zaczynać się od litery [A-Za-z].
Praca z dwukropkami i kropkami wymaga nieco więcej pracy, ale możesz to zrobić, jak pokazano w poniższym przykładzie.
Pamiętając, że dowód tożsamości musi być unikalny, tj. w dokumencie nie może być wielu elementów o tej samej wartości identyfikatora.
Reguły dotyczące treści identyfikatorów w HTML5 to (oprócz tego, że są unikalne):
This attribute's value must not contain white spaces. [...]
Though this restriction has been lifted in HTML 5,
an ID should start with a letter for compatibility.
To jest specyfikacja W3 dotycząca identyfikatora (z MDN):
Anystring,with the following restrictions:
must be at least one character long
must not contain any space characters
Previous versions of HTML placed greater restrictions on the content of ID values
(for example, they did not permit ID values to beginwith a number).
Aby odwołać się do identyfikatora zawierającego kropkę, musisz użyć ukośnika odwrotnego. Nie jestem pewien, czy to samo dla łączników lub podkreślników. Na przykład: HTML
Łączniki i podkreślenia zwykle nie wymagają ucieczki. Wyjątkiem jest jednak sytuacja, gdy łącznik pojawia się na początku identyfikatora, a po nim następuje inny łącznik (np. \--abc) Lub cyfra (np. \-123).
MrWhite
16
Ze specyfikacji HTML 4 ...
Tokeny ID i NAZWA muszą zaczynać się od litery ([A-Za-z]), po której może następować dowolna liczba liter, cyfr ([0-9]), łączników („-”), podkreślników („_”) , dwukropki („:”) i kropki („.”).
W dokumencie nie może być wielu elementów o tej samej wartości identyfikatora.
Dowolny ciąg znaków z następującymi ograniczeniami:
musi mieć co najmniej jedną postać
nie może zawierać żadnych spacji:
U + 0020 SPACE
U + 0009 TABULACJA ZNAKÓW (zakładka)
U + 000A PODAJNIK LINIOWY (LF)
U + 000C FORM FEED (FF)
ZWROT PRZEWOZU U + 000D (CR)
Używanie znaków oprócz ASCII letters and digits, '_', '-' and '.'może powodować problemy ze zgodnością, ponieważ nie były dozwolone HTML 4. Chociaż ograniczenie to zostało zniesione HTML 5, identyfikator powinien zaczynać się od litery kompatybilności.
Wygląda na to, że chociaż dwukropki (:) i kropki (.) Są poprawne w specyfikacji HTML, są one nieprawidłowe jako selektory identyfikatorów w CSS, więc prawdopodobnie najlepiej ich unikać, jeśli zamierzasz ich używać w tym celu.
Wartość musi być unikalna wśród wszystkich identyfikatorów w poddrzewie macierzystym elementu i musi zawierać co najmniej jeden znak. Wartość nie może zawierać spacji.
Co najmniej jedna postać, bez spacji.
Otwiera to drzwi do ważnych przypadków użycia, takich jak użycie znaków akcentowanych. Daje nam również dużo więcej amunicji, aby strzelać sobie w stopę, ponieważ możesz teraz używać wartości id, które będą powodować problemy zarówno z CSS, jak i JavaScript, chyba że naprawdę będziesz ostrożny.
Identyfikatory najlepiej nadają się do nazewnictwa części twojego układu, więc nie powinny podawać tej samej nazwy dla identyfikatora i klasy
ID pozwala na znaki alfanumeryczne i specjalne
ale unikaj używania # : . * !symboli
niedozwolone spacje
nie zaczyna się cyframi ani myślnikiem, po których następuje cyfra
wielkość liter ma znaczenie
użycie selektorów ID jest szybsze niż użycie selektorów klas
użyj łącznika „-” (podkreślenie „_” może również używać, ale nie jest dobre dla SEO) dla długich nazw klas CSS lub reguł Id
Jeśli reguła ma selektor identyfikatora jako selektor klucza, nie dodawaj nazwy znacznika do reguły. Ponieważ identyfikatory są unikalne, dodanie nazwy znacznika niepotrzebnie spowolniłoby proces dopasowywania.
W HTML5 atrybutu id można używać w dowolnym elemencie HTML, aw HTML 4.01 atrybutu id nie można używać z: <base>, <head>, <html>, <meta>, <param>, <script>, <style>, and <title>.
Ale nawet jeśli możesz zrobić identyfikator za pomocą dwukropków (:) lub kropki (.) CSS ma trudności z użyciem tych identyfikatorów jako Selektora. Głównie, gdy chcesz użyć pseudoelementów (: przed,: po).
Również w JS trudno jest wybrać te identyfikatory. Dlatego powinieneś użyć pierwszych czterech identyfikatorów, jak preferuje wielu programistów, a jeśli to konieczne, możesz użyć dwóch ostatnich.
W ES2015 identyfikatory muszą zaczynać się od $, _ lub dowolnego symbolu z podstawową właściwością pochodną Unicode ID_Start.
Reszta identyfikatora może zawierać $, _, U + 200C dla zerowej szerokości dla łącznika zerowego, U + 200D dla zerowej szerokości łącznika lub dowolny symbol z pochodną Unicode właściwość podstawową ID_Continue.
alfabety->
wielkie litery i małe cyfry-> 0-9
znaków specjalnych-> ':', '-', '_', '.'
format powinien zaczynać się od „.” lub alfabet, po którym następuje jeden ze specjalnych znaków większej liczby alfabetów lub cyfr. wartość pola id nie może kończyć się na „_”.
Również spacje nie są dozwolone, jeśli są podane, są traktowane jako różne wartości, co nie jest poprawne w przypadku atrybutów id.
ID
wartości są bardzo różne. Oto krótkie i pełne podsumowanieID
reguł HTML5 : stackoverflow.com/a/31773673/3597276**.**)
z jQuery wpędzi Cię w sporo kłopotów, na przykład użycie,<input id="me.name" />
a następnie$("#me.name").val()
spowoduje, że jQuery będzie szukał<me>
znacznika z klasą.name
, którego nikt nie chce naprawdę!Odpowiedzi:
W przypadku HTML 4 technicznie odpowiedź brzmi:
HTML 5 jest jeszcze bardziej liberalny, mówiąc tylko, że identyfikator musi zawierać co najmniej jeden znak i nie może zawierać znaków spacji.
W atrybucie id rozróżniana jest wielkość liter w XHTML .
Ze względów czysto praktycznych możesz unikać pewnych postaci. Kropki, dwukropki i „#” mają specjalne znaczenie w selektorach CSS, więc będziesz musiał uciec od tych znaków za pomocą odwrotnego ukośnika w CSS lub podwójnego odwrotnego ukośnika w ciągu selektora przekazanym do jQuery . Zastanów się, jak często będziesz musiał uciekać przed postacią z arkuszy stylów lub kodu, zanim oszalejesz z kropkami i dwukropkami w identyfikatorach.
Na przykład deklaracja HTML
<div id="first.name"></div>
jest ważna. Możesz wybrać ten element w CSS jako#first\.name
i w jQuery w następujący sposób:$('#first\\.name').
Ale jeśli zapomnisz odwrotnego ukośnika,$('#first.name')
będziesz miał doskonale poprawny selektor szukający elementu o identyfikatorze,first
a także posiadający klasęname
. Jest to błąd, który łatwo przeoczyć. Na dłuższą metę możesz być szczęśliwszy, wybierającfirst-name
zamiast identyfikatora (łącznik zamiast kropki).Możesz uprościć zadania programistyczne, ściśle przestrzegając konwencji nazewnictwa. Na przykład, jeśli ograniczysz się całkowicie do małych liter i zawsze oddzielasz słowa myślnikami lub podkreślnikami (ale nie oba, wybierz jedno i nigdy nie używaj drugiego), to masz łatwy do zapamiętania wzór. Nigdy nie będziesz się zastanawiać „
firstName
czy to byłoFirstName
?” ponieważ zawsze będziesz wiedział, że powinieneś pisaćfirst_name
. Wolisz futerał na wielbłądy? Zatem ogranicz się do tego, bez myślników ani podkreślników i zawsze konsekwentnie używaj wielkich lub małych liter dla pierwszej postaci, nie mieszaj ich.Bardzo niejasnym problemem było to, że co najmniej jedna przeglądarka, Netscape 6, nieprawidłowo traktowała wartości atrybutów id jako rozróżniające wielkość liter . Oznaczało to, że gdybyś wpisał
id="firstName"
swój HTML (małe litery „f”) i#FirstName { color: red }
CSS (wielkie litery „F”), ta błędna przeglądarka nie ustawiłaby koloru elementu na czerwony. Mam nadzieję, że w momencie tej edycji, kwiecień 2015 r., Nie zostaniesz poproszony o wsparcie Netscape 6. Rozważ to jako historyczny przypis.źródło
id
Atrybut [ w3.org/TR/html4/struct/global.html#adef-id](case wrażliwe HTML4) i musi zaczynać się od litery (w zakresie od A do Z). Zauważ też, że twój przykład nie powinien zmieniać koloru tekstu na czerwony, ponieważ twój CSS odnosi się do elementu z klasą, aFirstName
nie do twojegoid
.id="firstName"
HTML 4 lub HTML 5 i#FirstName { color: red }
CSS, tylko błędna przeglądarka ustawi kolor elementu na czerwony.Ze specyfikacji HTML 4 :
Częstym błędem jest użycie identyfikatora zaczynającego się od cyfry.
źródło
Możesz technicznie używać dwukropków i kropek w atrybutach id / name, ale zdecydowanie sugeruję unikanie obu.
W CSS (i kilku bibliotekach JavaScript, takich jak jQuery) zarówno kropka, jak i dwukropek mają specjalne znaczenie i jeśli nie będziesz ostrożny, napotkasz problemy. Okresy to selektory klas, a dwukropki to pseudoselektory (np. „: Hover” dla elementu, gdy wskaźnik myszy znajduje się nad nim).
Jeśli podasz elementowi identyfikator „my.cool:thing”, twój selektor CSS będzie wyglądał następująco:
Co tak naprawdę mówi: „element z identyfikatorem„ my ”, klasa„ cool ”i pseudo-selektor„ rzecz ”w CSS-speak.
Trzymaj się AZ każdego przypadku, liczb, podkreślników i łączników. I jak powiedziano powyżej, upewnij się, że twoje identyfikatory są unikalne.
To powinna być twoja pierwsza troska.
źródło
.
,:
) w identyfikatorach i nie możesz ich usunąć (kaszel ... Sharepoint), możesz obejść to w CSS z selektorami atrybutów zamiast selektorów id, np.[id='my.cool:thing']
Jednak selektor ten będzie miał niższą specyficzność niż selektor id, który może powodować inne problemy.jQuery ma obsługiwać dowolną poprawną nazwę ID. Musisz tylko unikać metaznaków (tj. Kropek, średników, nawiasów kwadratowych ...). To tak, jakby powiedzieć, że JavaScript ma problem z cytatami tylko dlatego, że nie możesz pisać
Selektory w jQuery API (patrz dolna uwaga)
źródło
Ściśle powinno to pasować
Ale jquery wydaje się mieć problemy z okrężnicami, więc lepiej byłoby ich unikać.
źródło
HTML5:
pozbywa się dodatkowych ograniczeń atrybutu id, patrz tutaj . Pozostały tylko wymagania (oprócz tego, że są unikalne w dokumencie):
PRE-HTML5:
Identyfikator powinien pasować:
-
(łącznik),_
(podkreślenie),:
(dwukropek) i.
(kropka)ale należy unikać
:
i dlatego, że.
:Na przykład identyfikator może być oznaczony etykietą „ab: c” i oznaczony w arkuszu stylów jako #ab: c, ale oprócz tego, że jest to identyfikator elementu, może oznaczać identyfikator „a”, klasa „b”, pseudo- selektor „c”. Najlepiej uniknąć zamieszania i unikać używania. i: całkowicie.
źródło
HTML5: Dozwolone wartości dla identyfikatora i atrybutów klasy
Począwszy od HTML5, jedynymi ograniczeniami wartości identyfikatora są:
Podobne zasady mają zastosowanie do klas (z wyjątkiem oczywiście wyjątkowości).
Tak więc wartością mogą być wszystkie cyfry, tylko jedna cyfra, tylko znaki interpunkcyjne, zawierać znaki specjalne, cokolwiek. Po prostu brak białych znaków. To bardzo różni się od HTML4.
W HTML 4 wartości identyfikatora muszą zaczynać się od litery, po której mogą następować tylko litery, cyfry, łączniki, podkreślenia, dwukropki i kropki.
W HTML5 są one poprawne:
Pamiętaj, że używanie liczb, znaków interpunkcyjnych lub znaków specjalnych w wartości identyfikatora może powodować problemy w innych kontekstach (np. CSS, JavaScript, regex).
Na przykład następujący identyfikator jest poprawny w HTML5:
Jest to jednak nieprawidłowe w CSS:
Ze specyfikacji CSS2.1:
W większości przypadków możesz uciec od znaków w kontekstach, w których mają ograniczenia lub specjalne znaczenie.
Referencje W3C
HTML5
źródło
W praktyce wiele witryn używa
id
atrybutów rozpoczynających się od cyfr, mimo że technicznie nie jest to prawidłowy kod HTML.Specyfikacja robocza HTML 5 rozluźnia reguły dla atrybutów
id
iname
: są one teraz po prostu nieprzezroczystymi ciągami znaków, które nie mogą zawierać spacji.źródło
Łączniki, podkreślenia, kropki, dwukropki, cyfry i litery obowiązują w CSS i JQuery. Poniższe powinno działać, ale musi być unikalne na całej stronie, a także musi zaczynać się od litery [A-Za-z].
Praca z dwukropkami i kropkami wymaga nieco więcej pracy, ale możesz to zrobić, jak pokazano w poniższym przykładzie.
źródło
HTML5
Pamiętając, że dowód tożsamości musi być unikalny, tj. w dokumencie nie może być wielu elementów o tej samej wartości identyfikatora.
Reguły dotyczące treści identyfikatorów w HTML5 to (oprócz tego, że są unikalne):
To jest specyfikacja W3 dotycząca identyfikatora (z MDN):
Więcej informacji:
id
)id
)źródło
Aby odwołać się do identyfikatora zawierającego kropkę, musisz użyć ukośnika odwrotnego. Nie jestem pewien, czy to samo dla łączników lub podkreślników. Na przykład: HTML
CSS
źródło
\--abc
) Lub cyfra (np.\-123
).Ze specyfikacji HTML 4 ...
Tokeny ID i NAZWA muszą zaczynać się od litery ([A-Za-z]), po której może następować dowolna liczba liter, cyfr ([0-9]), łączników („-”), podkreślników („_”) , dwukropki („:”) i kropki („.”).
EDYCJA: d'oh! Ponownie pobity do przycisku!
źródło
Nigdy też nie zapominaj, że identyfikator jest unikalny. Po użyciu wartość identyfikatora może nie pojawić się nigdzie w dokumencie.
Możesz mieć wiele identyfikatorów, ale wszystkie muszą mieć unikalną wartość.
Z drugiej strony istnieje element klasy. Podobnie jak identyfikator, może pojawiać się wiele razy, ale wartość może być używana wielokrotnie.
źródło
Unikalny identyfikator elementu.
W dokumencie nie może być wielu elementów o tej samej wartości identyfikatora.
Dowolny ciąg znaków z następującymi ograniczeniami:
nie może zawierać żadnych spacji:
Używanie znaków oprócz
ASCII letters and digits, '_', '-' and '.'
może powodować problemy ze zgodnością, ponieważ nie były dozwoloneHTML 4
. Chociaż ograniczenie to zostało zniesioneHTML 5
, identyfikator powinien zaczynać się od litery kompatybilności.źródło
Wygląda na to, że chociaż dwukropki (:) i kropki (.) Są poprawne w specyfikacji HTML, są one nieprawidłowe jako selektory identyfikatorów w CSS, więc prawdopodobnie najlepiej ich unikać, jeśli zamierzasz ich używać w tym celu.
źródło
dla
HTML5
Co najmniej jedna postać, bez spacji.
Otwiera to drzwi do ważnych przypadków użycia, takich jak użycie znaków akcentowanych. Daje nam również dużo więcej amunicji, aby strzelać sobie w stopę, ponieważ możesz teraz używać wartości id, które będą powodować problemy zarówno z CSS, jak i JavaScript, chyba że naprawdę będziesz ostrożny.
źródło
# : . * !
symboli<base>, <head>, <html>, <meta>, <param>, <script>, <style>, and <title>.
źródło
Każda wartość alfanumeryczna oraz „ - ” i „ _ ” jest poprawna. Ale powinieneś zacząć nazwę id dowolnym znakiem pomiędzy AZ lub az .
źródło
Bez spacji, musi rozpoczynać się od znaku od a do z oraz od 0 do 9.
źródło
W HTML
Identyfikator powinien zaczynać się od {AZ} lub {az} możesz dodawać cyfry, kropkę, łącznik, podkreślnik, dwukropki.
Na przykład:
Ale nawet jeśli możesz zrobić identyfikator za pomocą dwukropków (:) lub kropki (.) CSS ma trudności z użyciem tych identyfikatorów jako Selektora. Głównie, gdy chcesz użyć pseudoelementów (: przed,: po).
Również w JS trudno jest wybrać te identyfikatory. Dlatego powinieneś użyć pierwszych czterech identyfikatorów, jak preferuje wielu programistów, a jeśli to konieczne, możesz użyć dwóch ostatnich.
źródło
wartościami mogą być: [az], [AZ], [0-9], [* _: -]
służy do HTML5 ...
możemy dodać identyfikator do dowolnego tagu.
źródło
Od wersji ES2015 możemy również używać prawie wszystkich znaków Unicode dla identyfikatorów, jeśli zestaw znaków dokumentu jest ustawiony na UTF8.
Przetestuj tutaj: https://mothereff.in/js-variables
Przeczytaj o: https://mathiasbynens.be/notes/javascript-identifiers-es6
Czy powinieneś go użyć? Prawdopodobnie nie jest to dobry pomysł!
Przeczytaj o: https://stackoverflow.com/a/52799593/2494754
źródło
alfabety->
wielkie litery i małe cyfry-> 0-9
znaków specjalnych-> ':', '-', '_', '.'
format powinien zaczynać się od „.” lub alfabet, po którym następuje jeden ze specjalnych znaków większej liczby alfabetów lub cyfr. wartość pola id nie może kończyć się na „_”.
Również spacje nie są dozwolone, jeśli są podane, są traktowane jako różne wartości, co nie jest poprawne w przypadku atrybutów id.
źródło