HTML DOM.无论如何都要获取属性dict

HTML DOM. anyway to get attributes dict?

本文关键字:获取 属性 dict DOM 无论如何 HTML      更新时间:2023-09-26

node.attributes返回一个NamedNodeMap。。而且它不会像xml中那样给出所有的属性名称或值。

有办法得到这样的东西吗?

node.attributes.keys

node.attributes.values

node.attributes.items

有什么?

现在我用这个做我的遗嘱。。但是js不会给出class、id、href等属性名称,而是给出数字。。

listattr = function(node) {
    var attrs = [[],[]];
    for (var attr in node.attributes) {
        if (node.attributes[attr].nodeValue) {
            console.log(attr);
            console.log(node.attributes[attr].nodeValue);
            attrs[0].push(attr);
            attrs[1].push(node.attributes[attr].nodeValue);
        }
    }
    return attrs;
}

但是js不会给出像类这样的属性名称

它是一个类似数组的属性节点列表,其中确实有值和名称!您正在记录索引。

var attrs = node.attributes;
for (var i=0; i<attrs.length; i++)
    console.log(attrs[i].name, attrs[i].value);

Bergi的回答基本上说明了一切,但这里有一个完整的函数(使用下划线)可以将html元素的属性转换为dict:

_.reduce(myElement.attributes, function(memo, element){
  memo[element.name] = element.value;
  return memo;
}, {});

这对我有效:

Array.from(node.attributes).reduce((acc, it) => ({ ...acc, [it.name]: it.value }), {})