如何在JavaScript代码中获取数据属性的值?
我有下一个html:如何在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” }); }); 您需要访问:
是否可以获取以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