¿Puede un elemento html tener varios ID?


Entiendo que un id debe ser único dentro de una página HTML/XHTML.

Mi pregunta es, para un elemento dado, ¿puedo asignarle varios id?

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

Me doy cuenta de que tengo una solución fácil con el simple uso de una clase. Tengo curiosidad por usar identificaciones de esta manera.

Author: BoltClock, 2008-10-10

16 answers

No. De la especificación XHTML 1.0

En XML, los identificadores de fragmento son de tipo ID, y solo puede haber un atributo único de tipo ID por elemento. Por lo tanto, en XHTML 1.0 el atributo id se define como de tipo ID. Con el fin de garantizar que XHTML 1.0 los documentos son XML bien estructurados documentos, XHTML 1.0 documentos DEBEN utilice el atributo id al definir identificadores de fragmentos en los elementos listed above. Ver el HTML Directrices de Compatibilidad para información sobre la garantía de tales anclajes son compatibles con versiones anteriores al servir Documentos XHTML como tipo de medio texto/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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-09 04:13:54

Contrariamente a lo que todos los demás dijeron, la respuesta correcta es

El Selectores spec es muy claro acerca de esto:

Si un elemento tiene varios atributos ID, todos ellos deben ser tratados como ID para ese elemento a los efectos del selector ID.Esta situación se podría alcanzar utilizando mezclas de xml: id, DOM3 Core, DTDs XML y conocimiento específico del espacio de nombres.


Editar

Solo para aclarar: Sí, un XHTML el elemento puede tener varios id, por ejemplo

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

Pero no es posible asignar varios id al mismo atributo id utilizando una lista separada por espacios.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-18 06:28:03

Mi entendimiento siempre ha sido:

  • Los ID son de un solo uso y solo se aplican a un elemento...

    • Cada uno es atribuido como Identificador único a (solo) un único elemento.
  • Las clases se pueden usar más de una vez...

    • Por lo tanto, pueden aplicarse a más de un elemento, y de manera similar pero diferente, puede haber más de una clase (es decir, múltiples clases) por elemento .
 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-30 17:20:28

No. Mientras que la definición de w3c para HTML 4 no parece cubrir explícitamente su pregunta, la definición del atributo name and id dice que no hay espacios en el identificador:

Los tokens ID y NAME deben comenzar con una letra ([A -a-z]) y pueden ir seguidos de cualquier número de letras, dígitos ([0-9]), guiones ( " - " ), guiones bajos ("_"), dos puntos ( " :") y puntos (".").

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-02 19:31:39

No. Cada elemento DOM, si tiene un id, tiene un id único. Podrías aproximarlo usando algo como:

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

Y luego usa la navegación para obtener lo que realmente quieres.

Si solo está buscando aplicar estilos, los nombres de clase son mejores.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-10 16:11:23

Solo puede tener un ID por elemento, pero de hecho puede tener más de una clase. Pero no tiene múltiples atributos de clase, ponga varios valores de clase en un atributo.

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

Es perfectamente legal.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-02 19:30:07

No, debes usar DIVS anidados si quieres ir por ese camino. Además, incluso si pudiera, imagine la confusión que causaría cuando ejecuta document.getElementById(). Qué ID va a agarrar si hay varios?

En un tema ligeramente relacionado, puede agregar múltiples clases a un DIV. Ver Eric Myers discusión en,

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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-10 16:30:44

No no puede tener varios id para una sola etiqueta, pero he visto una etiqueta con un atributo name y un atributo id que son tratados de la misma manera por algunas aplicaciones.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-10 16:08:52

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

El atributo id asigna un identificador único a un elemento (que puede ser verificado por un analizador SGML).

Y

Los tokens ID y NAME deben comenzar con una letra ([A -a-z]) y pueden ser seguido de cualquier número de letras, dígitos ([0-9]), guiones ("-"), guiones bajos ( " _ "), dos puntos ( " :") y puntos (".").

Así que " id " debe ser único y no puede contener un espacio.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-13 13:41:41

No.

Dicho esto, no hay nada que te impida hacerlo. Pero obtendrá un comportamiento inconsistente con los diversos navegadores. No lo hagas. 1 ID por elemento.

Si desea varias asignaciones a un elemento, use clases (separadas por un espacio).

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-25 17:54:01

Eso es interesante, pero por lo que sé la respuesta es un firme no. No veo por qué necesitas un ID anidado, ya que normalmente lo cruzarás con otro elemento que tenga el mismo ID anidado. Si no lo haces no tiene sentido, si lo haces todavía tiene muy poco sentido.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-10 16:06:59

Sé que esto es un año de edad, pero yo tenía curiosidad acerca de esto y estoy seguro de que otros encontrarán su camino aquí. La respuesta simple es no, como otros han dicho antes que yo. Un elemento no puede tener más de un ID y un ID no se puede usar más de una vez en una página. Pruébalo y verás lo bien que no funciona.

En respuesta a la respuesta de tvanfosson con respecto al uso del mismo ID en dos elementos diferentes. Por lo que sé, un ID solo se puede usar una vez en una página independientemente de si está unido a una etiqueta diferente.

Por definición, un elemento que necesita un ID debe ser único, pero si necesita dos ID, entonces no es realmente único y necesita una clase en su lugar.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-20 11:40:02

Me gustaría decir técnicamente sí, ya que realmente lo que se renderiza es técnicamente siempre dependiente del navegador. La mayoría de los navegadores tratan de mantener las especificaciones lo mejor que pueden y por lo que sé no hay nada en las especificaciones CSS en contra de ella. Solo voy a responder por el código html,css,javascript real que se envía al navegador antes de que cualquier otro interpretador de pasos en.

Sin embargo, también digo que no, ya que todos los navegadores que normalmente pruebo en realidad no te permiten. Si necesita ver por sí mismo guardar lo siguiente como un .archivo html y abrirlo en los principales navegadores. En todos los navegadores que probé en la función javascript no coincidirá con un elemento. Sin embargo, elimine "hunkojunk" de la etiqueta de identificación y todo funciona bien. Código de ejemplo

<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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-18 18:21:17

Las clases están hechas especialmente para esto, aquí está el código del que se puede entender

<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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-01 16:11:58

No.

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

El valor no debe contener caracteres de espacio.

id="a b" Valor.

Dicho esto, puede estilizar varios ID. Pero si estás siguiendo las especificaciones, la respuesta es no.

 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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-16 13:13:36

No creo que puedas tener dos ids pero debería ser posible. Usar el mismo id dos veces es un caso diferente... como dos personas usando el mismo pasaporte. Sin embargo, una persona podría tener varios pasaportes... Vine buscando esto ya que tengo una situación en la que un solo empleado puede tener varias funciones. Decir "sysadm " y" team coordinator "tener el id =" sysadm teamcoordinator " me permitiría hacer referencia a ellos desde otras páginas para que los empleados.html # sysadm y empleados.html#teamcoordinator conduciría al mismo lugar... Un día alguien más podría hacerse cargo de la función de coordinador de equipo mientras el sysadm sigue siendo el sysadm... entonces sólo tengo que cambiar las identificaciones de los empleados.página html ... pero como dije - no funciona : (

 -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/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-13 10:53:52