【发布时间】:2019-12-18 14:17:30
【问题描述】:
我是前端开发和使用 d3.js 的新手。我在标签列表中选择某个标签时遇到问题。
我创建了一些图表,我需要将图像添加到某些节点。我尝试使用d3.select('g') 选择所需的标签,但这会选择第一个标签。但是我觉得最大的问题是标签叫法一样,比如倒数第二个标签不知道怎么选。
这是我的 HTML 代码(短版):
<svg _ngcontent-c1="" width="1366" height="99">
<gr _ngcontent-c1="" ng-reflect-zoomable-of="[object SVGSVGElement]">
<g _ngcontent-c1="" _nghost-c2="" ng-reflect-link="[object Object]">
<line _ngcontent-c2="" class="link" x1="1" y1="-2" x2="3" y2="-1"> </line>
</g>
<g _ngcontent-c1="" _nghost-c2="" ng-reflect-link="[object Object]">
<line _ngcontent-c2="" class="link" x1="5" y1="2" x2="9" y2="4"> </line>
</g>
<g _ngcontent-c1="" ng-reflect-node="[object Object]" ng-reflect-draggable-node="[object Object]" ng-reflect-draggable-in-graph="[object Object]">
<g transform="translate(3,4)">
<text class="node-name" x="13" y="-3" font-size="20px">one</text>
</g>
</g>
<g _ngcontent-c1="" ng-reflect-node="[object Object]" ng-reflect-draggable-node="[object Object]" ng-reflect-draggable-in-graph="[object Object]">
<g transform="translate(5,6)">
<text class="node-name" x="13" y="-3" font-size="20px">two </text>
</g>
</gr>
我尝试添加图片:
var svg = d3.select('svg').select('gr').select('g')
.append('svg')
.attr('width', 64)
.attr('height', 64)
.style('border', '1px solid black');
var imgs = svg.selectAll('image').data([0]);
imgs.enter()
.append('image')
.attr('xlink:href', '/assets/ToNode.png')
.attr('width', '64')
.attr('height', '64');
【问题讨论】:
标签: javascript typescript d3.js dom