Question

Je comprends qu'un identifiant 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 réalise que j’ai une solution simple en utilisant simplement un cours. Je suis simplement curieux d'utiliser des identifiants de cette manière.

Était-ce utile?

La solution

Non. De la Spécification XHTML 1.0

  

En XML, les identifiants de fragments sont de   type 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 pour être de type   ID. Afin de garantir que XHTML 1.0   les documents sont bien structurés en XML   documents, les documents XHTML 1.0 DOIVENT   utiliser l'attribut id lors de la définition   identifiants de fragments sur les éléments   énumérés ci-dessus. Voir le HTML   Directives de compatibilité pour   informations sur la garantie de ces ancres   sont compatibles en amont lors du service   Documents XHTML en tant que type de média   text / html.

Autres conseils

Contrairement à ce que tous les autres ont dit, la bonne réponse est OUI

La sélection de sélecteurs est très claire à ce sujet:

  

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

Modifier

Juste pour préciser: oui, un élément XHTML peut avoir plusieurs identifiants, par exemple.

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

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

Ma compréhension a toujours été:

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

    • Chaque élément est attribué en tant qu'identificateur unique à un seul élément .
  • Les classes peuvent être utilisées plus d'une fois ...

    • Elles peuvent donc être appliquées à plusieurs éléments et, de la même manière, elles peuvent être différentes de plusieurs classes (c.-à-d. plusieurs classes) par élément .

Non. alors que le La définition de w3c pour HTML 4 ne semble pas couvrir explicitement votre question, le la définition de l'attribut name et id ne dit pas d'espaces 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 traits d'union (" - -! > ";), traits de soulignement (&"; _ & ";), deux points (&";: & ";) et périodes (&";. & ";) .

Non. Chaque élément DOM, s'il a un identifiant, possède un identifiant unique et unique. Vous pouvez en faire une approximation en utilisant quelque chose comme:

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

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

Si vous souhaitez simplement appliquer des styles, les noms de classe sont préférables.

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

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

est parfaitement légal.

Non, vous devriez utiliser des DIV imbriquées si vous voulez vous diriger vers ce chemin. D'ailleurs, même si vous le pouviez, imaginez la confusion que cela causerait lorsque vous exécutez document.getElementByID (). Quel ID va-t-il saisir s'il y en a plusieurs?

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

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

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

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

  

L'attribut id attribue un identifiant unique à 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, de chiffres ([0-9]), de traits d'union (" - "),   underscores (" _ "), deux points (": & ";) et périodes (&";. & ";).

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

Non.

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

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

C'est intéressant, mais pour autant que je sache, la réponse est non. Je ne vois pas pourquoi vous avez besoin d'un identifiant imbriqué, car vous le croiserez généralement avec un autre élément possédant le même identifiant imbriqué. Si vous ne le faites pas, cela ne sert à rien. Si vous le faites, cela ne sert à rien.

Je sais que cela fait 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 identifiant et un identifiant ne peut pas être utilisé plus d'une fois dans une page. Essayez-le et vous verrez à quel point cela ne fonctionne pas .

En réponse à la réponse de tvanfosson concernant l’utilisation du même identifiant dans deux éléments différents. Autant que je sache, un identifiant ne peut être utilisé qu'une seule fois dans une page, qu'il soit associé ou non à une balise différente.

Par définition, un élément nécessitant un identifiant doit être unique, mais si vous avez besoin de deux identifiants, il n'est pas vraiment unique et nécessite plutôt une classe.

Je voudrais dire techniquement oui, puisque ce qui est rendu dépend toujours du navigateur. La plupart des navigateurs essaient de respecter les spécifications du mieux qu'ils peuvent et, autant que je sache, rien dans les spécifications CSS ne s'y réfère. Je ne ferai que garantir le code html, css et javascript qui sera envoyé au navigateur avant que tout autre interprète n'intervienne.

Cependant, je dis également non, car tous les navigateurs sur lesquels je teste habituellement ne vous le permettent pas. Si vous avez besoin de voir par vous-même, enregistrez le fichier suivant au format .html et ouvrez-le dans les principaux navigateurs. Dans tous les navigateurs que j'ai testés, la fonction javascript ne correspond à aucun élément. Cependant, supprimez & "; Hunkojunk &"; de l'étiquette d'identification 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>
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>

Non.

https: // www .w3.org / TR / 2011 / WD-html5-20110525 / elements.html # l'attribut id-id

  

La valeur ne doit contenir aucun espace.

id="a b" < - recherchez le caractère d'espace dans cette VaLuE .

Cela dit, vous pouvez attribuer un style à plusieurs identifiants. Mais si vous suivez les spécifications, la réponse est non.

Any ID assigned to a div element is unique.
However, you can assign multiple IDs "under", and not "to" a div element.
In that case, you have to represent those IDs as <span></span> IDs.

Say, you want two links in the same HTML page to point to the same div element in  the page.

The two different links
<p><a href="#exponentialEquationsCalculator">Exponential Equations</a></p>         

<p><a href="#logarithmicExpressionsCalculator"><Logarithmic Expressions</a></p>

Point to the same section of the page. 
<!-- Exponential / Logarithmic Equations Calculator -->
<div class="w3-container w3-card white w3-margin-bottom">      
   <span id="exponentialEquationsCalculator"></span>
   <span id="logarithmicEquationsCalculator"></span>
</div>

Je ne & # 180; pense pas que vous pouvez avoir deux identifiants & # 180; mais cela devrait être possible. Utiliser deux fois le même identifiant est un cas différent ... comme deux personnes utilisant le même passeport. Cependant, une personne peut avoir plusieurs passeports ... Je suis venue la chercher, car un seul employé peut avoir plusieurs fonctions. Dites & Quot; sysadm & Quot; et " coordinateur d'équipe " avoir l'id = " administrateur système d'équipe " me laisserait les référencer à partir d’autres pages afin que workers.html # sysadm et workers.html # teamcoordinator mènent au même endroit ... Un jour, une autre personne pourrait reprendre la fonction de coordinateur d’équipe pendant que le sysadm reste le sysadm ... alors je n'ai qu'à changer les identifiants sur la page Employés.html ... mais comme je l'ai dit - cela ne & # 180; t ne fonctionne pas: (

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top