javascript - 如何将 d3.xml 加载的 svg 附加到 svg 中

标签 javascript xml svg d3.js

尝试将外部 svgs 加载到动态创建的 svg 中,但仍访问已加载 svgs 的属性。这就是为什么我使用 d3.xml 但还没有弄清楚如何将其集成到使用 d3 创建的动态 svg 中。

代码和js控制台here 代码生成这个 svg

<svg id = "svgObj">
   <g class = "grp"></g>
   <g class = "grp"></g>
</svg>

我正在尝试在每个元素中加载circle.svg,因此它看起来像这样

<svg id = "svgObj">
   <g class = "grp"><svg id=minus>...</svg></g>
   <g class = "grp"><svg id=minus>...</svg></g>
</svg>

我尝试了下面的代码,但控制台错误提示没有appendChild方法

var grps = d3.selectAll( "g" );
img = grps.appendChild( svgNode.cloneNode( true ) );

先谢谢了

最佳答案

正如 @helderdarocha 所解释的,您将 d3 方法与普通 Javascript 方法混合在一起。该答案为您提供了如何使用简单的 Javascript 方法来实现这一点,我将通过解释如何使用 d3 方法来实现这一点。

要在 d3 选择的每个元素中附加新元素,方法名称很简单 append ,而不是 appendChild。要追加的参数可以是标签名称(d3 为选择中的每个元素创建该类型的新元素),也可以是返回实际 DOM 元素的函数(将为选择中的每个元素调用该函数)数据值和索引作为参数)。由于您要克隆现有节点,因此这就是您要使用的版本:

var grps = d3.selectAll( "g" );
img = grps.append( function(){return svgNode.cloneNode( true );} );

关于javascript - 如何将 d3.xml 加载的 svg 附加到 svg 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21716497/

相关文章:

javascript - GetHTTPSttaus 代码获取 API——React Native

php - 您成功使用过哪个 PHP RPC(XML 或 JSON)库?

regex - Sed:仅当标记与第一个字符串匹配时才转换为 xml 标记

javascript - 使用变换的 SVG 动画正在偏移元素

javascript - 如何从使用 jquery load() 加载的另一个 html 页面执行在主 html 文件中编写的脚本

javascript - ionic Angularjs vs jquery : $http. jsonp() vs jquery.ajax

javascript - 如何使用 AngularJS 检查输入字段是否在 Controller 中具有值

.net - xmlns 元素的顺序是否重要

javascript - SVG 旋转和缩放转换问题

css - 在 Firefox 中使用 CSS 设置 SVG 元素宽度/高度属性