简体   繁体   English

JavaScript:typeof attr.name返回未定义

[英]JavaScript: typeof attr.name returns undefined

I am trying to get all possible data-* attributes from every tag on my page. 我正在尝试从页面上的每个标签获取所有可能的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); });
}

now datas variable contains attribute objects and I want to search datas.name for specific value, in my case I'm searching for "data-val". 现在datas变量包含属性对象,我想在datas.name中搜索特定值,以我为例,我正在搜索“ data-val”。 But typeof datas.name returns undefined. 但是typeof datas.name返回未定义。 Any clue what to do? 任何线索该怎么办? Pure JavaScript please. 请使用纯JavaScript。 Thanx! 感谢名单!

update 更新

I could go with the following solution: 我可以采用以下解决方案:

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...
    }
  }
}

but is there a more elegant way to do that? 但是还有更优雅的方法吗?

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");
    }
}

http://jsfiddle.net/MsSht/1/ http://jsfiddle.net/MsSht/1/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM