Posso aggiungere un attributo personalizzato a un tag HTML come il seguente?
<tag myAttri="myVal" />
Posso aggiungere un attributo personalizzato a un tag HTML come il seguente?
<tag myAttri="myVal" />
Risposte:
Puoi modificare la tua dichiarazione! DOCTYPE (es. DTD) per consentirla, in modo che il documento [XML] sia ancora valido:
<!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 che è un attributo facoltativo, oppure potresti usare #REQUIRED
, ecc.
Ulteriori informazioni sono disponibili in DTD - Attributi .
<meta http-equiv="content-type" content="application/xhtml+xml" />
.
data-
.
Puoi aggiungere attributi personalizzati ai tuoi elementi a piacimento. Ma ciò renderà il tuo documento non valido.
In HTML 5 avrai la possibilità di utilizzare attributi di dati personalizzati con prefissodata-
.
|
non è consentito in un CSS href
, ma questo è ciò che è necessario per Google Fonts
No, questo interromperà la convalida.
In HTML 5 puoi / sarai in grado di aggiungere attributi personalizzati. Qualcosa come questo:
<tag data-myAttri="myVal" />
La data()
funzione jQuery consente di associare dati arbitrari con elementi DOM. Ecco un esempio .
In HTML5: sì: usa l' attributo data .
<ul>
<li data-animal-type="bird">Owl</li>
<li data-animal-type="fish">Salmon</li>
<li data-animal-type="spider">Tarantula</li>
</ul>
Sì, è possibile, l'avete fatto nella domanda stessa: <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>
Si, puoi farlo!
Avere il prossimo HTML
tag:
<tag key="value"/>
Possiamo accedere ai loro attributi con JavaScript
:
element.getAttribute('key'); // Getter
element.setAttribute('key', 'value'); // Setter
Element.setAttribute()
metti l'attributo nel HTML
tag se non esiste. Quindi, non è necessario dichiararlo nel HTML
codice se si intende impostarlo JavaScript
.
key
: potrebbe essere qualsiasi nome desideri per l'attributo, mentre non è già utilizzato per il tag corrente.
value
: è sempre una stringa contenente ciò di cui hai bisogno.
Ecco l'esempio:
document.getElementsByTagName("html").foo="bar"
Ecco un altro esempio su come impostare attributi personalizzati nell'elemento tag body:
document.getElementsByTagName('body')[0].dataset.attr1 = "foo";
document.getElementsByTagName('body')[0].dataset.attr2 = "bar";
Quindi leggi l'attributo di:
attr1 = document.getElementsByTagName('body')[0].dataset.attr1
attr2 = document.getElementsByTagName('body')[0].dataset.attr2
Puoi testare il codice sopra nella console in DevTools, ad es
uso i dati, li uso molto
<aside data-area="asidetop" data-type="responsive" class="top">
data-*
valori da JavaScript?
Un altro approccio, che è pulito e manterrà il documento valido, è quello di concatenare i dati desiderati in un altro tag, ad esempio id, quindi utilizzare la divisione per prendere ciò che si desidera quando lo si desidera.
<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>
Puoi aggiungere, ma poi devi scrivere anche una riga di codice JavaScript,
document.createElement('tag');
per assicurarsi che tutto vada a posto. Intendo Internet Explorer :)
<tag ...>
qui apparentemente significa solo qualsiasi tag HTML.
bene! puoi effettivamente creare un gruppo di attributi HTML personalizzati nascondendo gli attributi dei dati in ciò che desideri effettivamente.
per esempio.
[attribute='value']{
color:red;
}
<span attribute="value" >hello world</span>
Apparentemente funziona, ma ciò invaliderebbe il tuo documento, non è necessario utilizzare JScript per avere attributi personalizzati o anche elementi a meno che non sia necessario, devi solo trattare i tuoi nuovi attributi formulati (personalizzati) nello stesso modo in cui tratti il tuo attributo "dati"
Ricorda che "non valido" non significa nulla. Il documento verrà caricato sempre bene. e alcuni browser in realtà convaliderebbero il tuo documento solo con la presenza di DOCTYPE ....., sai davvero cosa intendo.
Puoi fare qualcosa del genere per estrarre il valore desiderato da JavaScript anziché un attributo:
<a href='#' class='click'>
<span style='display:none;'>value for JavaScript</span>some text
</a>
<input type="hidden" value="...">
. Considera, tuttavia, la differenza tra il tipo di dati che inserisci in vari attributi in contrasto con i dati che potresti inserire in un campo nascosto. Nascondere un <span>
(di tutte le cose) in un <a>
per mantenere un pezzo di metadati non è una buona mossa. Sarebbe peculiare al tuo sito e molto dipendente da JS (grazioso degrado, persone).