考虑以下代码:
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()
工厂的一般等效概念是什么?
您可以使用以下内容:
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] 删除。
我来说两句