我只是在玩JavaScript中的.dataset
,从我看到的结果来看,它返回的DOMStringMap
仅带有前缀为data-
的数据属性。就像这样:
console.log(document.body.dataset);
console.log('no ID there ^');
<body data-sometag='someValue' id='someID'></body>
在这里,我想知道是否有一种方法可以读取 ALL 属性,包括诸如class
或src
之类的属性并将其存储在JSON中。
就像.dataset
一样,但是对于所有属性。有标准的方法吗?还是我需要先创建一个对象,然后分别使用数据属性?
答案 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>