Tengo el siguiente html:
<span data-typeId="123" data-type="topic" data-points="-1" data-important="true" id="the-span"></span>
¿Es posible obtener los atributos que comienzan data-
y usarlos en el código JavaScript como el código a continuación? Por ahora me sale null
como resultado.
document.getElementById("the-span").addEventListener("click", function(){
var json = JSON.stringify({
id: parseInt(this.typeId),
subject: this.datatype,
points: parseInt(this.points),
user: "H. Pauwelyn"
});
});
javascript
html
custom-data-attribute
H. Pauwelyn
fuente
fuente
Respuestas:
Necesita acceder a la
dataset
propiedad :Resultado:
fuente
Debido a que la
dataset
propiedad no era compatible con Internet Explorer hasta la versión 11, puede utilizargetAttribute()
en su lugar:Documentación del conjunto de datos
documentación de getAttribute
fuente
Puedes acceder a él como
etc. Entonces en este caso:
this.dataset.points
fuente
También puede obtener los atributos con el método getAttribute () que devolverá el valor de un atributo HTML específico.
fuente
si está apuntando al atributo de datos en el elemento Html,
document.dataset
no trabajaráDeberías usar
o
fuente
Los navegadores modernos aceptan HTML y SVG DOMnode.dataset
Uso de la propiedad de conjunto de datos de nodo DOM de Javascript puro .
Es un antiguo estándar Javascript para elementos HTML (desde Chorme 8 y Firefox 6) pero nuevo para SVG (desde el año 2017 con Chorme 55.xy Firefox 51) ... No es un problema para SVG porque en la actualidad (2019) El uso compartido de la versión está dominado por los navegadores modernos.
Los valores de los valores-clave del conjunto de datos son cadenas puras, pero una buena práctica es adoptar el formato de cadena JSON para tipos de datos que no sean cadenas, para analizarlo
JSON.parse()
.Usar la propiedad del conjunto de datos en cualquier contexto
Fragmento de código para obtener y establecer conjuntos de datos de valores clave en contextos HTML y SVG.
fuente
Alrededor de 2019, usando jquery, se puede acceder a esto usando
$('#DOMId').data('typeId')
donde$('#DOMId')
está el selector de jquery para su elemento span.fuente
Pruebe esto en lugar de su código:
fuente
.data('type');
en su lugar.JSON
resultado, no unoalert
deldata-type
atributo.