¿Puedo agregar un atributo personalizado a una etiqueta HTML como el siguiente?
<tag myAttri="myVal" />
¿Puedo agregar un atributo personalizado a una etiqueta HTML como el siguiente?
<tag myAttri="myVal" />
Respuestas:
Puede modificar su declaración! DOCTYPE (es decir, DTD) para permitirla, de modo que el documento [XML] siga siendo válido:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
[
<!ATTLIST tag myAttri CDATA #IMPLIED>
]>
#IMPLIED
significa que es un atributo opcional, o podría usar #REQUIRED
, etc.
Más información está en DTD - Atributos .
<meta http-equiv="content-type" content="application/xhtml+xml" />
.
data-
.
Puede agregar atributos personalizados a sus elementos a voluntad. Pero eso hará que su documento sea inválido.
En HTML 5 tendrá la oportunidad de utilizar atributos de datos personalizados con el prefijodata-
.
|
no está permitido en un CSS href
, pero eso es lo que es necesario para Google Fonts
No, esto romperá la validación.
En HTML 5 puede / podrá agregar atributos personalizados. Algo como esto:
<tag data-myAttri="myVal" />
La data()
función jQuery le permite asociar datos arbitrarios con elementos DOM. Aquí hay un ejemplo .
En HTML5: sí: use el atributo de datos .
<ul>
<li data-animal-type="bird">Owl</li>
<li data-animal-type="fish">Salmon</li>
<li data-animal-type="spider">Tarantula</li>
</ul>
Sí, se puede, que lo hizo en la propia pregunta: <html myAttri="myVal"/>
.
var demo = document.getElementById("demo")
console.log(demo.dataset.myvar)
// or
alert(demo.dataset.myvar)
//this will show in console the value of myvar
<div id="demo" data-myvar="foo">anything</div>
¡Sí, tú puedes hacerlo!
Tener la siguiente HTML
etiqueta:
<tag key="value"/>
Podemos acceder a sus atributos con JavaScript
:
element.getAttribute('key'); // Getter
element.setAttribute('key', 'value'); // Setter
Element.setAttribute()
ponga el atributo en la HTML
etiqueta si no existe. Por lo tanto, no necesita declararlo en el HTML
código si va a configurarlo JavaScript
.
key
: podría ser cualquier nombre que desee para el atributo, mientras que aún no se utiliza para la etiqueta actual.
value
: siempre es una cadena que contiene lo que necesita.
Aquí está el ejemplo:
document.getElementsByTagName("html").foo="bar"
Aquí hay otro ejemplo de cómo establecer atributos personalizados en el elemento de etiqueta del cuerpo:
document.getElementsByTagName('body')[0].dataset.attr1 = "foo";
document.getElementsByTagName('body')[0].dataset.attr2 = "bar";
Luego lea el atributo por:
attr1 = document.getElementsByTagName('body')[0].dataset.attr1
attr2 = document.getElementsByTagName('body')[0].dataset.attr2
Puede probar el código anterior en la consola en DevTools, p. Ej.
uso data-any, los uso mucho
<aside data-area="asidetop" data-type="responsive" class="top">
data-*
valores de JavaScript?
Otro enfoque, que es limpio y mantendrá el documento válido, es concatenar los datos que desea en otra etiqueta, por ejemplo, id, luego use dividir para tomar lo que quiera cuando lo desee.
<html>
<script>
function demonstrate(){
var x = document.getElementById("example data").querySelectorAll("input");
console.log(x);
for(i=0;i<x.length;i++){
var line_to_illustrate = x[i].id + ":" + document.getElementById ( x[i].id ).value;
//concatenated values
console.log("this is all together: " + line_to_illustrate);
//split values
var split_line_to_illustrate = line_to_illustrate.split(":");
for(j=0;j<split_line_to_illustrate.length;j++){
console.log("item " + j+ " is: " + split_line_to_illustrate[j]);
}
}
}
</script>
<body>
<div id="example data">
<!-- consider the id values representing a 'from-to' relationship -->
<input id="1:2" type="number" name="quantity" min="0" max="9" value="2">
<input id="1:4" type="number" name="quantity" min="0" max="9" value="1">
<input id="3:6" type="number" name="quantity" min="0" max="9" value="5">
</div>
<input type="button" name="" id="?" value="show me" onclick="demonstrate()"/>
</body>
</html>
Puede agregar, pero también debe escribir una línea de código JavaScript,
document.createElement('tag');
para asegurarte de que todo esté en su lugar. Me refiero a Internet Explorer :)
<tag ...>
aquí aparentemente significa cualquier etiqueta HTML.
¡bien! en realidad puede crear un montón de atributos HTML personalizados al disfrazar los atributos de datos en lo que realmente desea.
p.ej.
[attribute='value']{
color:red;
}
<span attribute="value" >hello world</span>
Aparentemente funciona, pero eso invalidaría su documento, no es necesario usar JScript para que tenga atributos personalizados o incluso elementos, a menos que tenga que hacerlo, solo necesita tratar sus nuevos atributos formulados (personalizados) de la misma manera que trata su atributo "datos"
Recuerde que "inválido" no significa nada. El documento se cargará bien en todo momento. y algunos navegadores en realidad validarían su documento solo con la presencia de DOCTYPE ....., realmente saben a qué me refiero.
Puede hacer algo como esto para extraer el valor que desea de JavaScript en lugar de un atributo:
<a href='#' class='click'>
<span style='display:none;'>value for JavaScript</span>some text
</a>
<input type="hidden" value="...">
. Considere, sin embargo, la diferencia entre el tipo de datos que coloca en varios atributos en contraste con los datos que podría colocar en un campo oculto. Esconder un <span>
(de todas las cosas) en a <a>
para mantener una pieza de metadatos no es un buen movimiento. Sería peculiar de su sitio y muy dependiente de JS (degradación graciosa, personas).