【发布时间】:2021-08-11 23:51:34
【问题描述】:
我有 5 个元素的 snap svg 组,例如;
let canvas = Snap('#svg');
let myGroup = canvas.g();
myGroup.add(canvas.rect(100, 200, 110, 220).attr({fill: '#000'}));
myGroup.add(canvas.circle(400, 400, 50).attr({fill: '#500'}));
// want to remove this element later
myGroup.add(canvas.rect(100, 200, 50, 60).attr({fill: '#050'}));
myGroup.add(canvas.text(50, 100, 'Some Text').attr({stroke: '#005'}));
myGroup.add(canvas.rect(700, 200, 110, 220).attr({fill: '#055'}));
然后我可以使用索引访问myGroup 的特定元素,例如,如果我想更改文本的属性,我可以使用myGroup[3],因为它在myGroup 的第三个索引处。
现在我想删除第二个索引处的元素,然后在同一索引处添加一些其他元素,所以我使用了remove() 之类的方法;
myGroup[2].remove();
myGroup.add(canvas.path('M 100 200 l 30 35').attr({stroke: '#050'}));
但问题是;第 3 和第 4 索引处的元素向上移动(分别为第 2 和第 3 ),并且新元素已添加到第 4 索引。
有谁知道如何在同一索引处添加元素?
【问题讨论】:
-
在 DOM 中有
.replaceWith但我不知道 Snap 将如何处理它:developer.mozilla.org/en-US/docs/Web/API/ChildNode/replaceWith -
Snap.svg 元素抛出错误,说
myGroup[2].replaceWith不是函数
标签: javascript html svg snap.svg