我正试图从我页面上的每个标签获取所有可能的data- *属性。
var el = document.body.querySelectorAll("*");
for(i=0;i<el.length;i++){
var datas = [].filter.call(el[i].attributes, function(at) { return /^data-/.test(at.name); });
}
现在datas变量包含属性对象,我想搜索datas.name以获取特定值,在我的情况下,我正在搜索“data-val”。但 typeof datas.name 返回undefined。任何线索该怎么办?请使用纯JavaScript。感谢名单!
更新
我可以使用以下解决方案:
var el = document.body.querySelectorAll("*");
for(i=0;i<el.length;i++){
var datas = [].filter.call(el[i].attributes, function(at) { return /^data-/.test(at.name); });
for(var k=0;k<datas.length;k++){
nodes.push(datas[k].name.replace(/^data-/,""));
}
for(var l=0;l<nodes.length;l++) {
if(nodes.search("val")>0){
...do my code here...
}
}
}
但有更优雅的方法吗?
答案 0 :(得分:1)
var el = document.body.querySelectorAll("*"),
i = 0,
j = 0,
len = el.length;
for (; i < len; i++) {
var x = el[i].attributes,
len2 = x.length;
for (; j < len2; j++) {
if (x[j].name === "data-val") console.log("data-val present");
}
}