我想获取data-*(数据破折号或数据集)值,但不知道破折号后的内容。 例如:
<div data-whatever="value" data-another="value2"></div>
我不知道“无论”或“另一个”部分的命名方式,但我需要掌握这一价值。 JavaScript可以吗?
因为
document.querySelectorAll('[data-*]')
不是有效的选择器
答案 0 :(得分:2)
元素的dataset
属性包含所有data-*
属性。这是一个DOmStringMap
,其键是删除了data-
的属性,并将其余单词转换为camelCase。
我认为没有办法只选择具有任何data属性的元素,因此您必须选择所有元素并通过检查element.dataset
的长度自己过滤它们。
var dataElements = Array.from(document.querySelectorAll('*')).filter(el => Object.keys(el.dataset).length > 0);
答案 1 :(得分:1)
尝试这样的事情:
在示例中,我为div
<div data-whatever="value" data-another="value2" id="test"></div>
在我通过ID获得元素后,检索了dataset
属性,该属性返回了DOMStringMap
data = document.getElementById('test').dataset;
console.log(data);
最后我只是从返回的对象中获取了密钥。
Object.keys(data).map(function(el) {
console.log(el)
});
希望对您有所帮助:)