我想以编程方式检索声明的SVG属性。这是所有内联内容,如下所示:从标记中获取SVG子元素属性
<svg>
<path d="###########">
<animate from="5" to="0" begin="3s" dur="1s" etc etc>
</path>
</svg>
听起来很容易,对不对?但我正在打墙。我读过this,但对于初学者:
document.getElementsByTagName('path');
似乎并不在IE浏览器,这是重大的事故现场工作。它总是返回undefined。
(我知道IE only supports scripted animation,这是这个整体的场合。)
不管怎么说,“获取”的一部分在Chrome的工作,但是当这个节点列表中的开发工具登录控制台返回无益
[object Nodelist]
,当我登录各个路径我得到一个类似:
[object Text]
这一切都太相似,IE浏览器,而不是通常的详细的JavaScript对象,很难说出底下发生了什么。最后,当我尝试检索动画的声明属性时:即使在Chrome中,也可能无法正常工作:
.getAttributeNS(null, 'dur')
也似乎不起作用。开发工具表示路径对象文本没有'getAttributeNS'方法。同样是普通的'getAttribute'。我也尝试过SVG文件中的“.contentDocument”,但这也不起作用。基本上,我有所有在任何浏览器阿设置这些数值没有问题:
animation.setAttributeNS(null,'begin',startTimeRounded + 's');
我不能似乎得到他们。任何指导高度赞赏。
P.S. jQuery选择器不适用于SVG元素,除此之外,我宁愿不需要加载库来解决这个小问题。
P.P.S.我遍历了大量的路径,所以在这种情况下,为每个元素设置唯一ID的答案都没有帮助。我想按名称获取元素。跨浏览器是最好的,但它必须在IE中工作...
'[object Text]'是一个文本节点,它没有属性(不要与[object SVGTextElement]混淆)。你在看正确的节点吗? – gilly3 2012-04-03 00:04:47