【发布时间】:2021-09-19 14:57:06
【问题描述】:
我给你写信是因为我正在努力使用 D3.js(D3-selection)来移动 SVG 中的现有元素位置。
我见过很多创建新元素的例子,但在这里,我的元素已经创建好了。
我的 svg 中有这个结构:
<g id='maingroup' class='main'>
<title>titlemain</main>
<text id='text'>textContent</text>
</g>
<g id='othergroup1' class='othergroup'>
<title>othergroup1</title>
<text id='text1'>textContent1</text>
<ellipse fill="#ac08b6" cx="198.5" cy="25" rx="27" ry="18"></ellipse>
</g>
<g id='othergroup2' class='othergroup'>
<title>othergroup2</title>
<text id='text2'>textContent2</text>
<ellipse fill="#23d5f6" cx="198.5" cy="25" rx="27" ry="18"></ellipse>
</g>
我的目标是将所有椭圆移到主组中以获得:
<g id='maingroup' class='main'>
<title>titlemain</main>
<text id='text'>textContent</text>
<ellipse fill="#ac08b6" cx="198.5" cy="25" rx="27" ry="18"></ellipse>
<ellipse fill="#23d5f6" cx="198.5" cy="25" rx="27" ry="18"></ellipse>
</g>
我已经成功地用 D3.js 中的一部分和 DOM 操作的一部分来做到这一点。
svg = d3.select('svg')
allellipses = svg.selectAll('ellipse').nodes()
for (ell of allellipses) {document.querySelector('.main').append(ell)}
有没有办法只用 D3.js 做到这一点?我想用 D3.js 函数替换 document.querySelector。至少,要了解和理解附加现有元素的工作原理。
但也许只对这个操作使用简单的 DOM 操作会更有效。
【问题讨论】:
标签: javascript svg dom d3.js