如何创建“ svg”对象而不附加它?

这个:

考虑以下代码:

var svg = d3.select('#somediv').append("svg").attr("width", w).attr("height", h);

我想重构这段代码,以便它看起来像这样:

var svg = makesvg(w, h);
d3.select("#somediv").append(svg);

请注意,与第一个版本中显示的情况相比,在第二个版本append 中未创建 “ svg”对象;只会将其附加到d3.select("#somediv")

问题是如何实现该功能makesvg反过来,这又解决了以下问题:如何实例化“ svg”对象而不使用append此方法,因为这样一来,您可以执行以下操作:

function makesvg(width, height) {
  return _makesvg().attr("width", w).attr("height", h);
}

因此,我的问题归结为上述假设_makesvg()工厂的一般等效概念是什么?

Drew Noakes:

您可以使用以下内容:

var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');

注意的使用createElementNS这是必需的,因为svg元素与大多数HTML元素不在同一个XHTML命名空间中。

svg不管您是否使用D3,此代码都会创建一个新元素,然后在该单个元素上创建一个选择。

可以使它稍微简洁一些,但更清晰,更不易出现以下错误:

var svg = document.createElementNS(d3.ns.prefix.svg, 'svg');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章