Czy element html może mieć wiele identyfikatorów?

Rozumiem, że identyfikator musi być unikalny w obrębie strony HTML / XHTML.

Moje pytanie brzmi, czy dla danego elementu mogę przypisać do niego wiele identyfikatorów?

<div id="nested_element_123 task_123"></div>

Zdaję sobie sprawę, że mam proste rozwiązanie z prostym użyciem klasy. Jestem po prostu ciekaw używania identyfikatorów w ten sposób.

Author: BoltClock, 2008-10-10

16 answers

Nie. Z XHTML 1.0 Spec

W XML identyfikatory fragmentów są wpisz ID, a może być tylko pojedynczy atrybut typu ID na element. Dlatego w XHTML 1.0 atrybut id jest zdefiniowany jako typ Dowód osobisty. Aby zapewnić, że XHTML 1.0 dokumenty są dobrze zorganizowane XML Dokumenty, Dokumenty XHTML 1.0 muszą użyj atrybutu id podczas definiowania identyfikatory fragmentów na elementach wymienione powyżej. Zobacz HTML Wytyczne dotyczące zgodności dla informacje dotyczące zapewnienia takich kotwic są kompatybilne wstecz podczas serwowania Dokumenty XHTML jako typ nośnika tekst / html.

 178
Author: timmow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-09 04:13:54

Wbrew temu, co wszyscy mówili, poprawna odpowiedź brzmi tak

Spec selektorów jest o tym bardzo jasne:

Jeśli element ma wiele atrybutów ID, wszystkie z nich muszą być traktowane jako ID dla tego elementu do celów selektora ID.Taka sytuacja może być osiągnięta przy użyciu mieszanin xml:id, Dom3 Core, XML DTD i wiedzy specyficznej dla przestrzeni nazw.


Edit

Dla wyjaśnienia: tak, XHTML element może mieć wiele identyfikatorów, np.

<p id="foo" xml:id="bar">

Ale przypisanie wielu identyfikatorów do tego samego atrybutu id przy użyciu listy rozdzielonej spacjami nie jest możliwe.

 172
Author: user123444555621,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-18 06:28:03

Moje zrozumienie zawsze było:

  • Identyfikatory są jednorazowym użyciem i są stosowane tylko do jednego elementu...

    • każdy jest przypisywany jako niepowtarzalny identyfikator (tylko) jednemu pojedynczemu elementowi .
  • Klasy mogą być używane więcej niż raz...

    • mogą więc być stosowane do więcej niż jednego elementu i podobnie, ale inaczej, może być więcej niż jedna klasa (tj. wiele klas) na element .
 27
Author: Ross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-30 17:20:28

Nie. podczas gdy definicja z w3c dla HTML 4 nie wydaje się wyraźnie pokrywać twoje pytanie, definicja atrybutu name i id mówi, że nie ma spacji w identyfikatorze:

Tokeny ID i NAME muszą zaczynać się od litery ([a-Za-z]) i mogą być poprzedzone dowolną liczbą liter, cyfr ([0-9]), myślników ("-"), podkreślników ("_"), dwukropków ( " :") i kropek (".").

 26
Author: acrosman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-02 19:31:39

Nie. Każdy element DOM, jeśli ma id, ma pojedynczy, unikalny id. Można to przybliżyć używając czegoś takiego:

<div id='enclosing_id_123'><span id='enclosed_id_123'></span></div>

A następnie użyj nawigacji, aby uzyskać to, czego naprawdę chcesz.

Jeśli chcesz tylko zastosować style, nazwy klas są lepsze.

 17
Author: tvanfosson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-10 16:11:23

Możesz mieć tylko jedno ID na element, ale rzeczywiście możesz mieć więcej niż jedną klasę. Ale nie mają wielu atrybutów klasy, umieść wiele wartości klasy w jednym atrybutie.

<div id="foo" class="bar baz bax">
Jest całkowicie legalne.
 16
Author: AmbroseChapel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-02 19:30:07

Nie, powinieneś użyć zagnieżdżonych Div, jeśli chcesz iść w dół tej ścieżki. Poza tym, nawet gdybyś mógł, wyobraź sobie zamieszanie, jakie spowodowałoby to podczas uruchamiania dokumentu.getElementByID (). Jaki identyfikator ma zamiar pobrać, jeśli jest ich wiele?

W nieco pokrewnym temacie, możesz dodać wiele klas do DIV. Zobacz Eric Myers dyskusja na,

Http://meyerweb.com/eric/articles/webrev/199802a.html

 4
Author: Anjisan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-10 16:30:44

Nie Nie możesz mieć wielu identyfikatorów dla jednego tagu, ale widziałem znacznik z atrybutem name i atrybutem id, które są traktowane tak samo przez niektóre aplikacje.

 3
Author: tpower,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-10 16:08:52

Http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2

Atrybut id przypisuje unikalny identyfikator elementowi (który może być weryfikowane przez parser SGML).

I

Tokeny ID i NAME muszą zaczynać się od litery ([a-Za-z]) i mogą być po której następuje dowolna liczba liter, cyfr ([0-9]), myślników ("-"), podkreślniki ( " _ "), dwukropki ( " :") i kropki (".").

Więc " id " musi być unikalne i nie może zawierać miejsce.

 2
Author: Alexandr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-13 13:41:41

Nie.

Powiedziawszy to, nic cię nie powstrzyma. Ale będziesz miał niespójne zachowanie z różnymi przeglądarkami. Nie rób tego. 1 ID na element.

Jeśli chcesz mieć wiele przypisań do elementu, użyj klas (oddzielonych spacją).

 1
Author: Snowcrash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-25 17:54:01

To ciekawe, ale z tego co wiem odpowiedź brzmi stanowcze NIE. Nie rozumiem, dlaczego potrzebujesz zagnieżdżonego ID, ponieważ zwykle krzyżujesz go z innym elementem, który ma ten sam zagnieżdżony ID. Jeśli nie, to nie ma sensu.

 0
Author: Robert K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-10 16:06:59

Wiem, że to ma rok, ale sam byłem ciekawy tego i jestem pewien, że inni się tu znajdą. Prosta odpowiedź brzmi: nie, jak inni mówili przede mną. Element nie może mieć więcej niż jednego identyfikatora i nie może być użyty więcej niż raz na stronie. Wypróbuj go, a zobaczysz, jak dobrze nie działa .

W odpowiedzi na odpowiedź tvanfossona dotyczącą użycia tego samego identyfikatora w dwóch różnych elementach. Z tego co wiem ID może być użyty tylko raz na stronie niezależnie czy jest dołączony do innego znacznika.

Z definicji, element potrzebujący ID powinien być unikalny, ale jeśli potrzebujesz dwóch ID, to nie jest tak naprawdę unikalny i potrzebuje klasy.

 0
Author: Taylor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-20 11:40:02

Chciałbym powiedzieć technicznie tak, ponieważ tak naprawdę to, co zostanie renderowane, jest technicznie zawsze zależne od przeglądarki. Większość przeglądarek stara się trzymać specyfikacji jak najlepiej mogą I O ile wiem, nie ma nic w specyfikacji css przeciwko temu. Ręczę tylko za rzeczywisty kod html, css,javascript, który zostanie wysłany do przeglądarki, zanim pojawi się jakikolwiek inny interpreter.

Jednak mówię również nie, ponieważ każda przeglądarka, na której zazwyczaj testuję, nie pozwala ci na to. Jeśli trzeba zobaczyć na własne oczy zapisać następujące jako .plik html i otwórz go w głównych przeglądarkach. We wszystkich przeglądarkach, które testowałem na funkcji javascript nie będzie pasować do elementu. Jednak Usuń "hunkojunk" z tagu id i wszystko działa dobrze. Przykładowy Kod

<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>
 0
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-18 18:21:17

Klasy są specjalnie stworzone do tego, oto kod, z którego możesz zrozumieć

<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>
 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-01 16:11:58

Nie.

Https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute

Wartość nie może zawierać znaków spacji.

id="a b" wartość.

To powiedziawszy, ty możesz stylować wiele identyfikatorów. Ale jeśli postępujesz zgodnie ze specyfikacją, odpowiedź brzmi nie.

 0
Author: corysimmons,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-16 13:13:36

Nie sądzę, że można mieć dwa identyfikatory, ale powinno być to możliwe. Użycie tego samego identyfikatora dwa razy to inny przypadek... jak dwie osoby używające tego samego paszportu. Jednak jedna osoba może mieć wiele paszportów... Szukałem tego, ponieważ mam sytuację, w której jeden pracownik może pełnić kilka funkcji. Powiedz "sysadm" i "koordynator zespołu" o id = "sysadm teamcoordinator" pozwoli mi odwoływać się do nich z innych stron, tak aby pracownicy.html # sysadm i pracownicy.html # teamcoordinator doprowadziłoby do tego samego miejsca... Pewnego dnia ktoś inny może przejąć funkcję koordynatora zespołu, podczas gdy sysadm pozostaje sysadm... więc muszę tylko zmienić identyfikatory pracowników.strona html ... ale tak jak mówiłem - to nie działa: (

 -4
Author: Ole Reidar Johansen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-13 10:53:52