que - propiedades de html
¿Puede un elemento html tener múltiples identificadores? (17)
Contrariamente a lo que todos los demás dijeron, la respuesta correcta es SÍ
La especificación de los selectores es muy clara al respecto:
Si un elemento tiene múltiples atributos de ID, todos deben tratarse como ID para ese elemento para los fines del selector de ID. En tal caso, se podría alcanzar una situación utilizando mezclas de xml: id, DOM3 Core, XML DTD y espacios específicos. conocimiento.
Editar
Solo para aclarar: Sí, un elemento XHTML puede tener múltiples ID, por ejemplo
<p id="foo" xml:id="bar">
pero no es posible asignar varias identificaciones al mismo atributo de id
utilizando una lista separada por espacios.
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 ID?
<div id="nested_element_123 task_123"></div>
Me doy cuenta de que tengo una solución fácil simplemente usando una clase. Solo tengo curiosidad por usar las identificaciones de esta manera.
Eso es interesante, pero por lo que sé, la respuesta es un firme no. No veo por qué necesita una ID anidada, ya que normalmente 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.
Las clases están hechas especialmente para esto, aquí está el código del cual puedes 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>
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, que yo sepa, no hay nada en las especificaciones de css en su contra. Solo voy a responder por el código HTML real, css, javascript que se envía al navegador antes de que cualquier otro intérprete intervenga.
Sin embargo, también digo que no, ya que todos los navegadores en los que normalmente pruebo no te lo permiten. Si necesita ver por sí 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 funciona bien. Código de muestra
<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>
Mi entendimiento siempre ha sido:
Las ID son de un solo uso y solo se aplican a un elemento ...
- Cada uno se atribuye como un identificador único a (solo) un elemento único .
Las clases se pueden utilizar más de una vez ...
- Por lo tanto, se pueden aplicar 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 .
No creo que puedas tener dos identificaciones, 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 ... Lo busqué, ya que tengo una situación en la que un solo empleado puede tener varias funciones. Diga que "sysadm" y "coordinador del equipo" que tienen el id = "sysadm teamcoordinator" me permitirían consultarlos desde otras páginas, de modo que employee.html # sysadm y employee.html # teamcoordinator llevaría al mismo lugar ... Un día alguien de lo contrario, podría asumir la función de coordinador del equipo mientras que sysadm sigue siendo sysadm ... entonces solo tengo que cambiar los ID en la página employee.html ... pero como dije, no funciona :(
No, deberías usar DIVs anidados si quieres ir por ese camino. Además, incluso si pudieras, imagina la confusión que causaría cuando ejecutes document.getElementByID (). ¿Qué ID va a agarrar si hay varios?
En un tema ligeramente relacionado, puede agregar varias clases a un DIV. Ver la discusión de Eric Myers en
No, no puede tener múltiples ID para una sola etiqueta, pero he visto una etiqueta con un atributo de name
y un atributo de id
que son tratados de la misma manera por algunas aplicaciones.
No.
Habiendo dicho eso, no hay nada que te impida hacerlo. Pero obtendrás un comportamiento inconsistente con los distintos navegadores. No lo hagas 1 ID por elemento.
Si quieres múltiples asignaciones a un elemento usa clases (separadas por un espacio).
No.
w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute
El valor no debe contener caracteres de espacio.
id="ab"
<- encuentra el carácter de espacio en esa VaLuE .
Dicho esto, puedes diseñar múltiples IDs. Pero si estás siguiendo las especificaciones, la respuesta es no.
No. Cada elemento DOM, si tiene una identificación, tiene una identificación única y única. 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 buscas aplicar estilos, los nombres de clase son mejores.
No. De la especificación XHTML 1.0
En XML, los identificadores de fragmentos son de tipo ID, y solo puede haber un único atributo de tipo ID por elemento. Por lo tanto, en XHTML 1.0, el atributo id se define como de tipo ID. Para garantizar que los documentos XHTML 1.0 sean documentos XML bien estructurados, los documentos XHTML 1.0 DEBEN utilizar el atributo id al definir identificadores de fragmentos en los elementos enumerados anteriormente. Consulte las Pautas de compatibilidad de HTML para obtener información sobre cómo garantizar que dichos anclajes sean compatibles con versiones anteriores al entregar documentos XHTML como texto / html de tipo de medio.
Sé que este es un año de edad, pero yo mismo sentía curiosidad por esto y estoy seguro de que otros encontrarán su camino aquí. La respuesta simple es no, como han dicho otros 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 sobre el uso de la misma identificación en dos elementos diferentes. Por lo que sé, una identificación 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.
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.
<div id="foo" class="bar baz bax">
es perfectamente legal
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 de ID y NOMBRE deben comenzar con una letra ([A-Za-z]) y pueden ir seguidos 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.
No. Mientras que la definición de w3c para HTML 4 no parece cubrir explícitamente su pregunta, la definición del atributo de nombre e identificación dice que no hay espacios en el identificador:
Los tokens de ID y NOMBRE deben comenzar con una letra ([A-Za-z]) y pueden ir seguidos de cualquier número de letras, dígitos ([0-9]), guiones ("-"), guiones bajos ("_") , dos puntos (":") y puntos (".").
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>