node.attributes返回一个NamedNodeMap .. 并且它不会像xml中那样给出所有属性名称或值。
有没有办法得到这样的东西?
node.attributes.keys
node.attributes.values
node.attributes.items
任何一种?
现在我用它来赢得我的使用..但是js不会给出像class,id,href.it这样的属性名称,而是给出数字而不是..
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;
}
答案 0 :(得分:3)
但是js不会给出像class
这样的属性名称
它是Attribute nodes的类似数组的列表,它有值和名称!您正在记录索引。
var attrs = node.attributes;
for (var i=0; i<attrs.length; i++)
console.log(attrs[i].name, attrs[i].value);
答案 1 :(得分:0)
Bergi的答案基本上都说明了,但这里有一个完整的函数(使用下划线)将html元素的属性转换为dict:
_.reduce(myElement.attributes, function(memo, element){
memo[element.name] = element.value;
return memo;
}, {});