Un élément html peut-il avoir plusieurs ID?

Je comprends qu'un id doit être unique dans une page HTML/XHTML.

Ma question Est, pour un élément donné, puis-je lui attribuer plusieurs identifiants?

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

Je me rends compte que j'ai une solution facile en utilisant simplement une classe. Je suis juste curieux d'utiliser les identifiants de cette manière.

272
demandé sur BoltClock 2008-10-10 20:04:16

16 réponses

Non. À partir de la spécification XHTML 1.0

En XML, les identificateurs de fragment sont tapez ID, et il ne peut y avoir qu'un attribut unique de type ID par élément. Par conséquent, dans XHTML 1.0 le l'attribut id est défini comme étant de type ID. Afin de s'assurer que XHTML 1.0 les documents sont XML bien structuré documents, XHTML 1.0 les documents doivent utilisez l'attribut id lors de la définition identificateurs de fragment sur les éléments énumérés ci-dessus. Voir le code HTML Lignes directrices de compatibilité pour informations sur la garantie de ces ancres sont rétrocompatibles lors du service Documents XHTML comme type de support texte/html.

178
répondu timmow 2012-02-09 04:13:54

Contrairement à ce que tout le monde a dit, la bonne réponse est oui

La spécification sélecteurs est très claire à ce sujet:

Si un élément a plusieurs attributs D'ID, tous doivent être traités comme des ID pour cet élément aux fins du sélecteur D'ID.Une telle situation pourrait être atteinte en utilisant des mélanges de xml: id, DOM3 Core, DTD XML et des connaissances spécifiques à l'espace de noms.


Modifier

Juste pour clarifier: Oui, un XHTML l'élément peut avoir plusieurs id, par exemple

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

Mais l'attribution de plusieurs ID au même attribut id à l'aide d'une liste séparée par des espaces n'est pas possible.

172
répondu user123444555621 2012-06-18 06:28:03

Ma compréhension a toujours été:

  • Les ID sont à usage unique et ne sont appliqués qu'à un élément...

    • chacun est attribué comme identifiant Unique à (seulement) un seul élément.
  • Classes peuvent être utilisées plus d'une fois...

    • ils peuvent donc être appliqués à plus d'un élément , et de même mais différent, il peut y avoir plus d'une classe (c'est-à-dire plusieurs classes) par élément .
27
répondu Ross 2017-08-30 17:20:28

Non. alors que la définition du w3c pour HTML 4 ne semble pas couvrir explicitement votre question, la définition de l'attribut name et id ne dit aucun espace dans l'identifiant:

Les jetons ID et NAME doivent commencer par une lettre ([A-Za-z]) et peuvent être suivis d'un nombre quelconque de lettres, de chiffres ([0-9]), de tirets ( " - " ), de traits de soulignement ("_"), de deux-points ( " :") et de points (".").

26
répondu acrosman 2014-06-02 19:31:39

Non. Chaque élément DOM, s'il a un id, a un seul id unique. Vous pouvez l'approximer en utilisant quelque chose comme:

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

Et puis utilisez la navigation pour obtenir ce que vous voulez vraiment.

Si vous cherchez simplement à appliquer des styles, les noms de classe sont meilleurs.

17
répondu tvanfosson 2008-10-10 16:11:23

Vous ne pouvez avoir qu'un seul ID par élément, mais vous pouvez en fait avoir plus d'une classe. Mais n'avez pas plusieurs attributs de classe, mettez plusieurs valeurs de classe dans un attribut.

<div id="foo" class="bar baz bax">

Est parfaitement légal.

16
répondu AmbroseChapel 2014-06-02 19:30:07

Non, vous devriez utiliser des DIVs imbriqués si vous voulez suivre ce chemin. En outre, même si vous le pouviez, imaginez la confusion que cela causerait lorsque vous exécutez le document.getElementByID (). Quel identifiant va-t-il saisir s'il y en a plusieurs?

Sur un sujet légèrement lié, vous pouvez ajouter plusieurs classes à un DIV. Voir Eric Myers discussion à,

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

4
répondu Anjisan 2008-10-10 16:30:44

Non, vous ne pouvez pas avoir plusieurs ID pour une seule balise, mais j'ai vu une balise avec un attribut name et un attribut id qui sont traités de la même manière par certaines applications.

3
répondu tpower 2008-10-10 16:08:52

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

L'attribut id attribue un unique identificateur à un élément (qui peut être vérifié par un analyseur SGML).

Et

Les jetons ID et NAME doivent commencer par une lettre ([A-Za-z]) et peuvent être suivi d'un nombre quelconque de lettres, chiffres ([0-9]), tirets ("-"), des traits de soulignement ("_"), deux-points ( " :") et des points (".").

Donc " id " doit être unique et ne peut pas contenir espace.

2
répondu Alexandr 2013-08-13 13:41:41

Non.

Cela dit, rien ne vous empêche de le faire. Mais vous obtiendrez un comportement incohérent avec les différents navigateurs. Ne pas le faire. 1 ID par élément.

Si vous voulez plusieurs assignations à un élément, utilisez des classes (séparées par un espace).

1
répondu Snowcrash 2015-04-25 17:54:01

C'est intéressant, mais pour autant que je sache, la réponse est un non ferme. Je ne vois pas pourquoi vous avez besoin d'un ID imbriqué, puisque vous le croiserez généralement avec un autre élément qui a le même ID imbriqué. Si vous n'avez pas il n'y a pas de point, si vous le faites il y a encore très peu de point.

0
répondu Robert K 2008-10-10 16:06:59

Je sais que c'est un an, mais j'étais curieux à ce sujet moi-même et je suis sûr que d'autres trouveront leur chemin ici. La réponse simple est non, comme d'autres l'ont dit avant moi. Un élément ne peut pas avoir plus d'un ID et un ID ne peut pas être utilisé plus d'une fois dans une page. Essayez - le et vous verrez à quel point il ne fonctionne pas .

En réponse à la réponse de tvanfosson concernant l'utilisation du même ID dans deux éléments différents. Pour autant que je sache un ID ne peut être utilisé qu'une seule fois dans une page indépendamment de savoir s'il est attaché à une étiquette différente.

Par définition, un élément ayant besoin d'un ID doit être unique, mais si vous avez besoin de deux ID, il n'est pas vraiment unique et a besoin d'une classe à la place.

0
répondu Taylor 2010-04-20 11:40:02

Je voudrais dire techniquement oui, puisque vraiment ce qui est rendu est techniquement toujours dépendant du navigateur. La plupart des navigateurs essaient de respecter les spécifications du mieux qu'ils peuvent et pour autant que je sache, il n'y a rien dans les spécifications css contre cela. Je vais seulement me porter garant du code html,CSS,javascript qui est envoyé au navigateur avant que n'importe quel autre interpréteur n'intervienne.

Cependant, je dis aussi non puisque chaque navigateur sur lequel je teste généralement ne vous permet pas réellement. Si vous besoin de voir par vous-même enregistrer ce qui suit en tant que .fichier html et ouvrez-le dans les principaux navigateurs. Dans tous les navigateurs que j'ai testés sur la fonction javascript ne correspondra pas à un élément. Cependant, supprimez "hunkojunk" de la balise id et tout fonctionne bien. Exemple De Code

<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
répondu James 2012-04-18 18:21:17

Les Classes sont spécialement conçues pour cela, voici le code à partir duquel vous pouvez comprendre

<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
répondu 2014-03-01 16:11:58

Non.

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

La valeur ne doit pas contenir de caractères d'espace.

id="a b" valeur.

Cela dit, Vous pouvez styliser plusieurs ID. Mais si vous suivez les spécifications, la réponse est non.

0
répondu corysimmons 2017-12-16 13:13:36

Je ne pense pas que vous pouvez avoir deux identifiants mais cela devrait être possible. L'utilisation du même id deux fois est un cas différent... comme deux personnes utilisant le même passeport. Cependant, une personne pourrait avoir plusieurs passeports... Je suis venu chercher cela car j'ai une situation où un seul employé peut avoir plusieurs fonctions. Dire "sysadm" et "Team coordinator" ayant l'id = "sysadm teamcoordinator" me permettrait de les référencer à partir d'autres pages afin que les employés.html#sysadm et les employés.html # teamcoordinator conduirait à la même place... Un jour, quelqu'un d'autre pourrait prendre en charge la fonction de coordinateur d'équipe alors que le sysadm reste le sysadm... ensuite, je n'ai qu'à changer les identifiants des employés.la page html ... mais comme je l'ai dit-ça ne marche pas: (

-4
répondu Ole Reidar Johansen 2010-09-13 10:53:52