如何在JavaScript代码中获取数据属性的值?

如何在JavaScript代码中获取数据属性的值?,javascript,html,custom-data-attribute,Javascript,Html,Custom Data Attribute,我有下一个html: 是否可以获取以data-开头的属性,并在下面的JavaScript代码中使用它?现在我得到的结果是null document.getElementById(“跨度”).addEventListener(“单击”,函数(){ var json=json.stringify({ id:parseInt(this.typeId), 主题:this.datatype, 点:parseInt(this.points), 用户:“H.Pauwelyn” }); }); 您需要访问:

我有下一个html:


是否可以获取以
data-
开头的属性,并在下面的JavaScript代码中使用它?现在我得到的结果是
null

document.getElementById(“跨度”).addEventListener(“单击”,函数(){
var json=json.stringify({
id:parseInt(this.typeId),
主题:this.datatype,
点:parseInt(this.points),
用户:“H.Pauwelyn”
});
});
您需要访问:

结果:

// json would equal:
{ "id": 123, "subject": "topic", "points": -1, "user": "Luïs" }
您可以通过以下方式访问它:

element.dataset.points

因此,在本例中:
this.dataset.points

由于Internet Explorer在版本11之前不支持
dataset
属性,因此您可能需要使用
getAttribute()

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


请尝试以下操作,而不是代码:

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

如果目标是Html元素中的数据属性

document.dataset
将不起作用

你应该使用

document.querySelector("html").dataset.pbUserId

现代浏览器接受HTML和SVG DOMnode.dataset 使用

这是一个(自Chorme 8和Firefox 6以来)但(自2017年Chorme 55.x和Firefox 51以来)。。。这对于SVG来说不是问题,因为在现在(2019年),该版本的使用份额主要由现代浏览器控制

dataset键值的值是纯字符串,但是一个好的做法是对非字符串数据类型采用JSON字符串格式,通过
JSON.parse()
对其进行解析

在任何上下文中使用dataset属性 用于在HTML和SVG上下文中获取和设置键值数据集的代码片段

console.log(“--GET values--”)
var x=document.getElementById('html_示例').dataset;
控制台日志(“s:,x.s”);
对于(JSON.parse(x.list)的var i)console.log(“list_i:”,i)
var y=document.getElementById('g1').dataset;
控制台日志(“s:,y.s”);
for(JSON.parse(y.list)的var i)console.log(“list_i:,i”)
log(“--设置值--”);
y、 s=“再见!”;y、 list=“null”;
console.log(document.getElementById('svg_示例').innerHTML)

您好


大约在2019年,使用jquery,可以使用
$('DOMId').data('typeId')
访问,其中
$('DOMId')
是span元素的jquery选择器。

还可以使用返回特定HTML属性值的方法获取属性

var elem=document.getElementById('the-span');
var-typeId=elem.getAttribute('data-typeId');
var type=elem.getAttribute('data-type');
var points=elem.getAttribute('data-points');
var-important=elem.getAttribute('data-important');
log(`typeId:${typeId}| type:${type}| points:${points}| important:${important}`
);

Asker没有提到jQuery,这甚至不是一个好的jQuery。应该是
.data('type')取而代之。除此之外,使用“代替你的代码”的建议过于广泛;询问者希望保留事件处理设置和
JSON
结果,而不是
数据类型
属性的
警报
。这是jquery,不是纯javascript。请记住,根据MDN,数据集标准不适用于Internet Explorer<11。“要支持IE 10及以下版本,您需要使用getAttribute()访问数据属性。”在现在(2019年),也可以将节点的dataset属性与SVG节点(!)一起使用,请参阅或使用。
document.querySelector("html").dataset.pbUserId
document.getElementsByTagName("html")[0].dataset.pbUserId