获取元素的所有数据属性并将其存储在JSON

时间:2019-08-24 17:31:56

标签: javascript html attributes

我只是在玩JavaScript中的.dataset,从我看到的结果来看,它返回的DOMStringMap仅带有前缀为data-的数据属性。就像这样:

console.log(document.body.dataset);
console.log('no ID there ^');
<body data-sometag='someValue' id='someID'></body>

在这里,我想知道是否有一种方法可以读取 ALL 属性,包括诸如classsrc之类的属性并将其存储在JSON中。 就像.dataset一样,但是对于所有属性。有标准的方法吗?还是我需要先创建一个对象,然后分别使用数据属性?

1 个答案:

答案 0 :(得分:0)

您可以使用Element.attributes创建对象:

var all_attrs = Object.fromEntries(Array.from(document.body.attributes).map((a) => [a.nodeName, a.value]));

console.log(all_attrs);
<body data-sometag='someValue' id='someID'></body>

对于不支持Object.fromEntries的浏览器,可以使用Array.prototype.forEach

var all_attrs = {};

Array.from(document.body.attributes).forEach((a) => {
  all_attrs[a.nodeName] = a.value;
});

console.log(all_attrs);
<body data-sometag='someValue' id='someID'></body>