2015-11-17 5 views
27

ich nächste html habe:get Datenattribute in JavaScript-Code

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

Ist es möglich, die Attribute zu erhalten, die mit data- beginnen, und verwenden Sie es in den JavaScript Code wie Code unten? Für jetzt bekomme ich null als Ergebnis.

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" 
    }); 
}); 

Antwort

33

Sie müssen die dataset property zuzugreifen:

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" 
    }); 
}); 

Ergebnis:

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

Sie können darauf zugreifen, wie

element.dataset.points 

etc. Also in diesem Fall: this.dataset.points

31

Da die dataset Eigenschaft nicht von Internet Explorer bis Version 11 unterstützt wurde, können Sie getAttribute() stattdessen verwenden:

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

Dataset documentation

getAttribute documentation

-5

die Sie interessieren anstelle des Codes :

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

Asker hat jQuery nicht erwähnt, das ist nicht einmal eine gute jQuery für dieses Ziel. Sollte stattdessen '.data ('type');' sein. –

+1

Und darüber hinaus ist der Vorschlag, "statt Ihres Codes" zu verwenden, viel zu weit gefasst; der Asker möchte die Ereignisbehandlungseinrichtung und das Ergebnis "JSON" beibehalten, keine "Warnung" des Attributs "data-type". – trincot

+1

das ist jquery, nicht reines javascript. – user3130012

Verwandte Themen