2015-11-17 13 views
27

Tôi có html tiếp theo:get dữ liệu thuộc tính trong mã JavaScript

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

Có thể để có được những thuộc tính mà bắt đầu với data-, và sử dụng nó trong Javascript mã như mã dưới đây? Hiện tại tôi nhận được kết quả là null.

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

Trả lời

33

Bạn cần truy cập vào 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" 
    }); 
}); 

Kết quả:

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

Bạn có thể truy cập vào nó như

element.dataset.points 

vv Vì vậy, trong trường hợp này: this.dataset.points

31

dataset bất động sản không được hỗ trợ bởi trình duyệt Internet Explorer cho đến khi phiên bản 11, bạn có thể muốn sử dụng getAttribute() thay vì:

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

Dataset documentation

getAttribute documentation

-5

Hãy thử điều này thay vì mã của bạn :

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

Asker không đề cập đến jQuery, đây không phải là jQuery tốt cho công ty này. Nên là '.data ('type');' thay vào đó. –

+1

Và trên hết, đề xuất sử dụng "thay vì mã của bạn" là quá rộng; Asker sẽ muốn giữ thiết lập xử lý sự kiện và kết quả 'JSON', không phải là' alert' của thuộc tính 'data-type'. – trincot

+1

đây là jquery, không phải là javascript tinh khiết. – user3130012

Các vấn đề liên quan