我有以下代码示例,试图显示svg地图的d
属性(找到here)。
// path method
var node = xmlDoc.getElementById('g67');
console.log(node);
for(var i = 0; i < node.getElementsByTagName('path').length; ++i) {
console.log(node.getElementsByTagName('path')[i].getAttribute('d'));
}
和
// childNodes method
var node = xmlDoc.getElementById('g67');
console.log(node);
for(var i = 0; i < node.childNodes.length; ++i) {
console.log(node.childNodes[i].getAttribute('d'));
}
前者有效但后者无效。
我理解我在XML DOM中的节点概念出错了。任何帮助,将不胜感激。谢谢。
可以找到完整的代码here
答案 0 :(得分:0)
childNodes
为您提供所有子节点。文本节点,注释,处理指令,一切。
您想要检查子类型(名称必须是“路径”):
var node = document.getElementById('g67'), child, i;
console.log(node);
for (i = 0; i < node.childNodes.length; i++) {
child = node.childNodes[i];
if (child.nodeName === 'path') {
console.log(child.getAttribute('d'));
}
}
另请注意,childNodes
仅为您提供直接儿童,而getElementsByTagName()
则为您提供所有后代。