2

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

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

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

我也用 getBBox() 试过这个,结果是一样的。我正在使用当前的 FireFox 版本。


我发现了问题所在。我将 getElementById 与可见性属性结合使用。我在 SVG 结构的根中将可见性设置为隐藏,然后在嵌套的 g 元素中将可见性属性设置为可见。getElementById 函数在不显示中间节点时返回 null。在更改可见性之前调用 getElementbyId 可以使事情正常进行。

这是我在哪里发现的参考:https ://bugzilla.mozilla.org/show_bug.cgi?id=756985

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

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

4

0 回答 0