Entiendo que una identificación debe ser única dentro de una página HTML / XHTML.
Mi pregunta es, para un elemento dado, ¿puedo asignarle múltiples identificadores?
<div id="nested_element_123 task_123"></div>
Me doy cuenta de que tengo una solución fácil simplemente usando una clase. Tengo curiosidad por usar los identificadores de esta manera.
html
xhtml
standards-compliance
webmat
fuente
fuente
Respuestas:
No. De la especificación XHTML 1.0
fuente
Contrariamente a lo que todos los demás dijeron, la respuesta correcta es SÍ
La especificación de Selectores es muy clara al respecto:
Editar
Solo para aclarar: Sí, un elemento XHTML puede tener múltiples identificadores, por ejemplo
pero
id
no es posible asignar múltiples identificadores al mismo atributo usando una lista separada por espacios.fuente
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.
(que corresponde a las especificaciones CSS)id
atributo. Para aclarar, elxml:id
atributo (y, de hecho, cualquier atributo fuera del espacio de nombres predeterminado) no es válido en XHTML. Sin embargo, como usted cita de la especificación HTML5, esto de ninguna manera hacexml:id="bar"
que falle silenciosamente; seguirá agregando labar
ID a este elemento, permitiéndole coincidir#bar
.Mi comprensión siempre ha sido:
Los ID son de un solo uso y solo se aplican a un elemento ...
Las clases se pueden usar más de una vez ...
fuente
No. Si bien la definición de w3c para HTML 4 no parece cubrir explícitamente su pregunta, la definición del atributo de nombre e id dice que no hay espacios en el identificador:
fuente
No. Cada elemento DOM, si tiene una identificación, tiene una identificación única y única. Puedes aproximarlo usando algo como:
y luego usa la navegación para obtener lo que realmente quieres.
Si solo está buscando aplicar estilos, los nombres de clase son mejores.
fuente
Solo puede tener una ID por elemento, pero puede tener más de una clase. Pero no tenga múltiples atributos de clase, ponga múltiples valores de clase en un atributo.
Es perfectamente legal.
fuente
No, no puede tener múltiples identificadores para una sola etiqueta, pero he visto una etiqueta con un
name
atributo y unid
atributo que algunas aplicaciones tratan de la misma manera.fuente
No, debe usar DIV anidados si desea avanzar por ese camino. Además, incluso si pudiera, imagine la confusión que causaría al ejecutar document.getElementByID (). ¿Qué identificación va a tomar si hay varias?
En un tema ligeramente relacionado, puede agregar varias clases a un DIV. Ver la discusión de Eric Myers en,
http://meyerweb.com/eric/articles/webrev/199802a.html
fuente
getElementById();
¿No hace nada sin una cadena que especifica qué obtener?getElementById('foo');
¡obtendrá el elemento con foo como ID! Las identificaciones múltiples no importarían aquí. Todavía buscaría "foo".fuente
http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2
y
Entonces "id" debe ser único y no puede contener un espacio.
fuente
Me gustaría decir técnicamente que sí, ya que realmente lo que se procesa depende técnicamente del navegador. La mayoría de los navegadores intentan cumplir con las especificaciones lo mejor que pueden y, por lo que sé, no hay nada en las especificaciones de CSS en su contra. Solo voy a garantizar el código html, css, javascript real que se envía al navegador antes de que intervenga cualquier otro intérprete.
Sin embargo, también digo que no, ya que cada navegador en el que normalmente pruebo no te deja. Si necesita verlo usted mismo, guarde lo siguiente como un archivo .html y ábralo 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 funcionará bien. Código de muestra
fuente
No.
Dicho esto, no hay nada que te impida hacerlo. Pero obtendrá un comportamiento inconsistente con los distintos navegadores. No lo hagas 1 ID por elemento.
Si desea asignaciones múltiples a un elemento, use clases (separadas por un espacio).
fuente
Eso es interesante, pero que yo sepa, la respuesta es un no rotundo. No veo por qué necesita una ID anidada, ya que generalmente la cruzará con otro elemento que tenga la misma ID anidada. Si no lo hace, no tiene sentido, si lo hace todavía hay muy poco punto.
fuente
Sé que esto tiene un año pero tenía curiosidad sobre 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 una ID y una 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 de la misma ID en dos elementos diferentes. Hasta donde sé, una ID solo se puede usar una vez en una página, independientemente de si está adjunta a una etiqueta diferente.
Por definición, un elemento que necesita una ID debe ser único, pero si necesita dos ID, entonces no es realmente único y necesita una clase en su lugar.
fuente
Las clases están especialmente hechas para esto, aquí está el código desde el cual puedes entender
fuente
No.
https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
id="a b"
<- encuentra el carácter de espacio en ese VaLuE .Dicho esto, puede diseñar múltiples ID. Pero si sigue las especificaciones, la respuesta es no.
fuente
Los ID deben ser únicos, por lo que solo debe usar un ID en particular una vez en una página. Las clases pueden usarse repetidamente.
consulte https://www.w3schools.com/html/html_id.asp para obtener más detalles.
fuente
No creo que puedas tener dos Id´s pero debería ser posible. Usar la misma identificación dos veces es un caso diferente ... como dos personas que usan el mismo pasaporte. Sin embargo, una persona podría tener varios pasaportes ... Llegué a buscar esto ya que tengo una situación en la que un solo empleado puede tener varias funciones. Digamos "sysadm" y "coordinador del equipo" teniendo el id = "sysadm teamcoordinator" me permitiría hacer referencia a ellos desde otras páginas para que employee.html # sysadm and employee.html # teamcoordinator conduzca al mismo lugar ... Un día alguien de lo contrario, podría hacerse cargo de la función de coordinador del equipo mientras el sysadm sigue siendo el sysadm ... entonces solo tengo que cambiar los identificadores en la página employee.html ... pero como dije, no funciona :(
fuente