Rozumiem, że identyfikator musi być unikalny na stronie HTML / XHTML.
Moje pytanie brzmi: czy dla danego elementu mogę przypisać mu wiele identyfikatorów?
<div id="nested_element_123 task_123"></div>
Zdaję sobie sprawę, że mam proste rozwiązanie, korzystając z klasy. Jestem ciekawy używania identyfikatorów w ten sposób.
html
xhtml
standards-compliance
webmat
źródło
źródło
Odpowiedzi:
Nie. Z specyfikacji XHTML 1.0
źródło
W przeciwieństwie do tego, co powiedzieli wszyscy inni, prawidłowa odpowiedź brzmi TAK
Specyfikacja Selektorów jest bardzo jasna na ten temat:
Edytować
Tylko dla wyjaśnienia: Tak, element XHTML może mieć wiele identyfikatorów, np
ale przypisanie wielu identyfikatorów do tego samego
id
atrybutu przy użyciu listy oddzielonej spacjami nie jest możliwe.źródło
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.
(co odpowiada specyfikacjom CSS)id
atrybutu. Aby wyjaśnić,xml:id
atrybut (i w rzeczywistości dowolny atrybut poza domyślną przestrzenią nazw) nie jest prawidłowy w XHTML. Jednak, jak cytujesz ze specyfikacji HTML5, w żaden sposób nie powodujexml:id="bar"
to cichego niepowodzenia; nadal dodabar
identyfikator do tego elementu, umożliwiając dopasowanie#bar
.Moje zrozumienie zawsze brzmiało:
Identyfikatory są jednorazowego użytku i są stosowane tylko do jednego elementu ...
Z klas można korzystać więcej niż raz ...
źródło
Nie. Chociaż definicja z w3c dla HTML 4 nie wydaje się wyraźnie obejmować twojego pytania, w definicji atrybutu name i id nie ma spacji w identyfikatorze:
źródło
Nie. Każdy element DOM, jeśli ma identyfikator, ma jeden unikalny identyfikator. Możesz to przybliżyć za pomocą czegoś takiego:
a następnie użyj nawigacji, aby uzyskać to, czego naprawdę chcesz.
Jeśli chcesz po prostu zastosować style, nazwy klas są lepsze.
źródło
Możesz mieć tylko jeden identyfikator na element, ale rzeczywiście możesz mieć więcej niż jedną klasę. Ale nie posiadaj wielu atrybutów klas, umieść wiele wartości klas w jednym atrybucie.
jest całkowicie legalny.
źródło
Nie, nie możesz mieć wielu identyfikatorów dla jednego tagu, ale widziałem tag z
name
atrybutem iid
atrybutem, które są traktowane tak samo przez niektóre aplikacje.źródło
Nie, powinieneś użyć zagnieżdżonych DIV, jeśli chcesz podążać tą ścieżką. Poza tym, nawet jeśli możesz, wyobraź sobie zamieszanie, jakie spowodowałoby to po uruchomieniu document.getElementByID (). Jaki identyfikator będzie przechwycony, jeśli będzie ich wiele?
W nieco pokrewnym temacie możesz dodać wiele klas do DIV. Zobacz dyskusję Erica Myersa na
http://meyerweb.com/eric/articles/webrev/199802a.html
źródło
getElementById();
nic nie robi bez łańcucha określającego, co uzyskać ?!getElementById('foo');
dostanie element z foo jako ID! Wiele identyfikatorów nie ma tutaj znaczenia. Wciąż szukałby „foo”.źródło
http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2
i
Zatem „id” musi być unikalny i nie może zawierać spacji.
źródło
Chciałbym powiedzieć technicznie tak, ponieważ tak naprawdę to, co jest renderowane, technicznie zawsze zależy od przeglądarki. Większość przeglądarek stara się zachować specyfikacje najlepiej jak potrafią i o ile wiem, nie ma nic przeciwko specyfikacji css. Zamierzam tylko ręczyć za rzeczywisty kod HTML, CSS, javascript, który jest wysyłany do przeglądarki, zanim pojawi się jakikolwiek inny tłumacz.
Jednak mówię też „nie”, ponieważ każda przeglądarka, na której zwykle testuję, nie pozwala na to. Jeśli chcesz się przekonać, zapisz następujące pliki jako plik .html i otwórz je w głównych przeglądarkach. We wszystkich testowanych przeglądarkach funkcja javascript nie pasuje do elementu. Jednak usuń „hunkojunk” ze znacznika id i wszystko działa dobrze. Przykładowy kod
źródło
Nie.
Powiedziawszy to, nic nie stoi na przeszkodzie, abyś to zrobił. Ale uzyskasz niespójne zachowanie w różnych przeglądarkach. Nie rób tego 1 identyfikator na element.
Jeśli chcesz wielu przypisań do elementu, użyj klas (oddzielonych spacją).
źródło
To ciekawe, ale o ile wiem odpowiedź brzmi zdecydowanie nie. Nie rozumiem, dlaczego potrzebujesz zagnieżdżonego identyfikatora, ponieważ zwykle krzyżujesz go z innym elementem, który ma ten sam zagnieżdżony identyfikator. Jeśli nie, nie ma sensu, jeśli tak, to nadal ma bardzo mało sensu.
źródło
Wiem, że to roczek, ale sam byłem ciekawy tego i jestem pewien, że inni znajdą tu swoją drogę. Prosta odpowiedź brzmi „nie”, jak inni mówili przede mną. Element nie może mieć więcej niż jednego identyfikatora, a identyfikatora nie można użyć więcej niż jeden raz na stronie. Wypróbuj, a zobaczysz, jak dobrze nie działa działa.
W odpowiedzi na odpowiedź tvanfosson dotyczącą zastosowania tego samego identyfikatora w dwóch różnych elementach. O ile mi wiadomo, identyfikatora można użyć tylko raz na stronie, niezależnie od tego, czy jest on dołączony do innego tagu.
Z definicji element wymagający identyfikatora powinien być unikalny, ale jeśli potrzebujesz dwóch identyfikatorów, nie jest on naprawdę unikalny i zamiast tego potrzebuje klasy.
źródło
klasy są specjalnie do tego stworzone, oto kod, który można zrozumieć
źródło
Nie.
https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
id="a b"
<- znajdź spację w tym VaLuE .Mimo to, można projektować wiele identyfikatorów. Ale jeśli postępujesz zgodnie ze specyfikacją, odpowiedź brzmi „nie”.
źródło
Identyfikatory powinny być unikalne, więc konkretnego identyfikatora należy używać tylko raz na stronie. Klasy mogą być używane wielokrotnie.
sprawdź https://www.w3schools.com/html/html_id.asp, aby uzyskać więcej informacji.
źródło
Nie sądzę, że możesz mieć dwa Id, ale to powinno być możliwe. Dwukrotne użycie tego samego identyfikatora to inna sprawa ... jak dwie osoby korzystające z tego samego paszportu. Jednak jedna osoba może mieć wiele paszportów ... Przyszło mi ich szukać, ponieważ mam sytuację, w której jeden pracownik może pełnić kilka funkcji. Powiedzmy, że „sysadm” i „koordynator zespołu” o id = „sysadm teamcoordinator” pozwolą mi odnieść się do nich z innych stron, tak aby inaczej może przejąć funkcję koordynatora zespołu, podczas gdy sysadm pozostaje sysadm ... wtedy muszę tylko zmienić identyfikatory na stronie workers.html ... ale jak już powiedziałem - to nie działa :(
źródło