Si eres lector habitual de este blog recordarás que no hace mucho vimos cómo hacer esto con jQuery. Vamos ahora a ver cómo hacerlo con javascript a pelo, sin tirar de esas librerías. Repitamos los mismos ejemplos pero sólo con javascript:
<div id='fruta' data-fruta='fresa'></div>
En el div con Id “fruta” vamos a guardar un dato: que es una fresa (mismo ejemplo que en artículo anterior). ¿Cómo accedo a este valor usando javascript?
//opción A. A lo bruto //funciona, pero no es elegante window.alert(document.getElementById("fruta").getAttribute('data-fruta')); //opción B. La buena window.alert(document.getElementById("fruta").dataset.fruta);
Ahí tienes dos ejemplos en los que hacemos un alert() de los datos guardados en el atributo data. El primero, usando getAttribute(), en teoría es la opción «bruta» ya que en principio debería accederse a estos datos como en el segundo ejemplo, que se supone que sería el método correcto. El problema es que el acceso a dataset no está bien implementado en todos los navegadores, así que la opción de usar getAttribute() hoy por hoy, aunque no sea la correcta en la teoría, es la funcional.
¿Y cómo queda el tema de los guiones que habíamos visto en el ejemplo en jQuery? Bueno. Si usamos getAttribute() ponemos el nombre del atributo tal cual, si usamos dataset hacemos como en jQuery y quitamos los guiones (y el prefijo data) usando también notación camelCase:
<div id='fruta' data-fruta-oferta='pera'></div> <script type="javascript"> //con getAttribtue window.alert(document.getElementById("fruta").getAttribute("data-fruta-oferta")); //mediante dataset window.alert(document.getElementById("fruta").dataset.frutaOferta); </script>