2015-11-17 23 views
27

mam następny HTML:uzyskać dane w kodzie JavaScript

<span data-typeId="123" data-type="topic" data-points="-1" data-important="true" id="the-span"></span> 

Czy to możliwe, aby uzyskać atrybuty rozpoczynające się data- i używać go w kodu JavaScript podobnego kodu poniżej? Na razie otrzymuję null jako wynik.

document.getElementById("the-span").addEventListener("click", function(){ 
    var json = JSON.stringify({ 
     id: parseInt(this.typeId), 
     subject: this.datatype, 
     points: parseInt(this.points), 
     user: "Luïs" 
    }); 
}); 

Odpowiedz

33

Musisz uzyskać dostęp do dataset property:

document.getElementById("the-span").addEventListener("click", function() { 
    var json = JSON.stringify({ 
    id: parseInt(this.dataset.typeid), 
    subject: this.dataset.type, 
    points: parseInt(this.dataset.points), 
    user: "Luïs" 
    }); 
}); 

Wynik:

// json would equal: 
{ "id": 123, "subject": "topic", "points": -1, "user": "Luïs" } 
6

Można uzyskać do niego dostęp, jak

element.dataset.points 

itp Więc w tym przypadku: this.dataset.points

31

Ponieważ nieruchomość dataset nie był wspierany przez Internet Explorer aż do wersji 11, może chcesz używać getAttribute() zamiast:

document.getElementById("the-span").addEventListener("click", function(){ 
    console.log(this.getAttribute('data-type')); 
}); 

Dataset documentation

getAttribute documentation

-5

Spróbuj to zamiast kodu :

var type=$("#the-span").attr("data-type"); 
alert(type); 
+3

Asker nie wspomniał o jQuery, to nie jest nawet dobra jQuery dla tego purusu. Powinien to być '.data ('type');'. –

+1

Co więcej, sugestia użycia tego "zamiast kodu" jest zbyt szeroka; Pytający chciałby zachować konfigurację obsługi zdarzeń i wynik "JSON", a nie "alert" z atrybutu "typ danych". – trincot

+1

to jquery, a nie czysty javascript. – user3130012

Powiązane problemy