使用SVG的getCTM和getElementById

时间:2013-04-02 09:43:50

标签: javascript svg

我已经动态生成了SVG,我需要找到其中一个元素的当前坐标。根据SVG文档,可以使用getCMT()函数完成此操作。我无法在JavaScript中使用它。这是一个示例代码片段:

thing = document.getElementById("#bx" + myState.myId);
matrix = thing.getCTM();

我正确选择了SVG元素,它是一个'g'元素,因此它有一个变换矩阵。当我尝试获取矩阵时,它返回一个'null'。这是一项简单的任务,因此它不起作用非常令人费解。我花了一些时间寻找示例,但它们似乎都使用直接在HTML中加载的静态SVG。我错过了什么?

我也尝试过使用getBBox()并获得相同的结果。我正在使用当前的FireFox版本。


我发现了问题所在。我将getElementById与 visibility 属性结合使用。我在SVG结构的根目录中设置 hidden 的可见性,然后在嵌套的g元素中将visibility属性设置为 visible 。当未显示中间节点时,getElementById函数返回null。在更改可见性之前调用getElementbyId使得工作正常。

以下是我发现这一点的参考:https://bugzilla.mozilla.org/show_bug.cgi?id=756985

具体细节与是否附加SVG有关。如果没有附加,那么一切都必须可见。如果已附加,则可以使用隐藏/可见。

感谢那些回复的人。在FireFox中,如果在getElementId参数的开头有一个“#”,它没有任何区别,但是知道正确的语法是很好的。感谢。

0 个答案:

没有答案