Javascript 如何在raphael.js文档中添加子svg标记?

Javascript 如何在raphael.js文档中添加子svg标记?,javascript,svg,coffeescript,raphael,Javascript,Svg,Coffeescript,Raphael,我正在使用Raphael.js从Javascript(实际上是Coffeescript)生成SVG图形 但是,我希望通过将子图形放入嵌套在第一个标记中的第二个标记中,能够包含自动缩放的子图形。不幸的是,允许我添加矩形和路径等的Raphael Paper对象没有添加SVG的选项 我尝试使用以下代码在javascript中将标记直接添加到DOM中: res = document.createElement("svg") res.setAttribute("x",x) res.setAttribute

我正在使用Raphael.js从Javascript(实际上是Coffeescript)生成SVG图形

但是,我希望通过将子图形放入嵌套在第一个标记中的第二个标记中,能够包含自动缩放的子图形。不幸的是,允许我添加矩形和路径等的Raphael Paper对象没有添加SVG的选项

我尝试使用以下代码在javascript中将标记直接添加到DOM中:

res = document.createElement("svg")
res.setAttribute("x",x)
res.setAttribute("y",y)
res.setAttribute("width",width)
res.setAttribute("height",height)
res.setAttribute("viewBox","0 0 100 100")
res.innerHTML = someInnerSVG
@paper.canvas.appendChild(res)
这似乎按照预期更新了DOM,将我的新SVG标记添加为主外部SVG的子级。但是,屏幕上实际上没有显示此内部的任何内容。(我的内部SVG路径在0 100 100范围内缩放,因此在viewBox中也是如此。)

由拉斐尔制作的外部SVG中的其余图形可见。但内在的一点都不重要


我所尝试的是可能的吗?知道我做错了什么吗

您应该将这些子元素放入Raphael集合中。从那里,您将能够对集合应用转换。要转换集合,请调用
transform()
方法并使用
s
属性:

set.transform('s[sx],[sy]');
其中,
sx
是水平刻度量,
sy
是垂直刻度量。插入数字时,请删除括号

请参阅此处的文档:
元素的方法适用于集合,因为集合是伪元素。

我不知道Coffeescript,但看起来您实际上没有向SVG元素添加任何内容。“res.innerHTML=”设置新SVG元素的innerHTML不是吗。而@paper.canvas.appendChild则将其添加到外部SVG。是的,但在我看来,您添加的是一个空SVG。尝试向内部SVG添加
rect
或其他元素。“rect”位于名为someInnerSVG的变量中。(实际上是一堆小路)哦,好吧。我误解了。进行!