Eu tenho o próximo html:
<span data-typeId="123" data-type="topic" data-points="-1" data-important="true" id="the-span"></span>
É possível obter os atributos que começam com data-
e usá-lo no código JavaScript , como o código abaixo? Por enquanto eu recebo 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
fonte
fonte
Respostas:
Você precisa acessar a
dataset
propriedade :Resultado:
fonte
Como a
dataset
propriedade não era suportada pelo Internet Explorer até a versão 11, você pode usargetAttribute()
:Documentação do conjunto de dados
Documentação getAttribute
fonte
Você pode acessá-lo como
etc. Então, neste caso:
this.dataset.points
fonte
Você também pode pegar os atributos com o método getAttribute () , que retornará o valor de um atributo HTML específico.
fonte
se você estiver segmentando o atributo de dados no elemento Html,
document.dataset
não funcionavocê deveria usar
ou
fonte
Navegadores modernos aceitam HTML e SVG DOMnode.dataset
Usando a propriedade do conjunto de dados do nó DOM do Javascript puro .
É um antigo padrão Javascript para elementos HTML (desde Chorme 8 e Firefox 6), mas novo para SVG (desde o ano de 2017 com Chorme 55.xe Firefox 51) ... Não é um problema para SVG, porque atualmente (2019) o compartilhamento de uso da versão é dominado por navegadores modernos.
Os valores dos valores-chave do conjunto de dados são cadeias de caracteres puras, mas uma boa prática é adotar o formato de cadeia JSON para tipos de dados que não são de cadeia, para analisá-lo
JSON.parse()
.Usando a propriedade do conjunto de dados em qualquer contexto
Snippet de código para obter e definir conjuntos de dados de valores-chave nos contextos HTML e SVG.
fonte
Por volta de 2019, usando jquery, isso pode ser acessado usando
$('#DOMId').data('typeId')
where$('#DOMId')
é o seletor jquery para seu elemento span.fonte
Tente isso em vez do seu código:
fonte
.data('type');
vez disso, deveria ser .JSON
resultado, não umalert
dodata-type
atributo.