我希望能够通过程序检索已声明的SVG属性。所有内容都是内联的,类似于以下内容:
<svg>
<path d="###########">
<animate from="5" to="0" begin="3s" dur="1s" etc etc>
</path>
</svg>
听起来非常简单,对吧?但我遇到了难题。我已经阅读了 这个网站,但是首先:
document.getElementsByTagName('path');
这段代码在IE浏览器中似乎无法工作,这是主要的问题点。它总是返回undefined。
(我知道IE仅支持脚本动画,这就是这个问题的全部原因。)
无论如何,在Chrome浏览器中,“get”部分都可以正常工作,但是当在Dev Tools中记录此Nodelist时,控制台会返回一个没有帮助的消息。
[object Nodelist]
当我记录每个路径时,我得到了类似的输出:
[object Text]
这段代码与IE非常相似,而不是通常的详细JavaScript对象,这使得很难了解底层发生了什么。最后,当我尝试检索动画声明的属性时:
.getAttributeNS(null, 'dur')
似乎在Chrome中也不起作用。开发工具显示路径对象文本没有“getAttributeNS”方法。普通的“getAttribute”也一样。我还尝试了SVG文件上的“.contentDocument”,但也没有起作用。基本上,我完全没有问题以这种方式在任何浏览器中设置这些值:
animation.setAttributeNS(null,'begin',startTimeRounded + 's');
我似乎无法获取它们。非常感谢任何指导。
附言:jQuery选择器在SVG元素上不起作用,而且我不想加载库来解决这个小问题。
附言2:我正在迭代大量路径,因此建议为每个元素设置唯一ID的答案在这种情况下并不有用。我想通过名称获取元素。最好是跨浏览器的,但必须在IE中工作...
[object Text]
是一个文本节点,它没有属性(不要与[object SVGTextElement]
混淆)。您是否在查看正确的节点? - gilly3