gpt4 book ai didi

javascript - D3 : Issue with links not disappearing on removal

转载 作者:行者123 更新时间:2023-12-03 10:09:21 25 4
gpt4 key购买 nike

我整理了以下内容 - http://jsfiddle.net/hiwilson1/c48dt2kb/ .

关键代码在这里:

function generateNodes(p) {

var node = svg.append("circle")
.data([p])
.call(force.drag)
.attr("class", "node")
.attr("fill", "black")
.attr("r", 0.1)
.transition()
.attr("r", 5)
.transition().delay(20000)
.attr("r", 0.1)
.style("opacity", 0.1)
.remove()
.each("end", function() {
force.links().forEach(function(link, i) {
if (link.source == force.nodes()[0] || link.target == force.nodes()[0]) {
force.links().splice(i, 1)
}
})
svg.selectAll("line").data(force.links()).exit().remove()
force.nodes().shift()
})

force.nodes().push(p)

generateLinks(p);

force.start()
}

鼠标单击时会生成一个节点,如果“十字线”半径内有任何其他节点,它们将链接到最近生成的节点。 20000 毫秒后,节点和链接应该消失。目前,节点工作得很好,但链接不太好——当关联的节点被删除时,它们不会全部删除。 @Lars Kotthoff 提到迭代某些东西并从迭代中删除该东西是一个坏主意,但是 1> 我看不到其他方法来实现我想要的东西,2> 如果你迭代对象肯定有任何“跳过”的问题over”你正在迭代的东西被否定了?

最佳答案

我已经更正了您的代码,请参阅http://jsfiddle.net/hxyyhu6b/1/

主要原理:每个链接获取 id 并使用 id 选择器删除。

现在删除函数迭代器:

            .each("end", function(d) {
for(var i= 0; i<force.links().length;){
var link = force.links()[i]
if ((link.source == d) || (link.target == d)) {
force.links().splice(i, 1)
svg.select("#" + link.id).remove()
}
else {i++}
}
force.nodes().splice(force.nodes().indexOf(d), 1)
})

关于javascript - D3 : Issue with links not disappearing on removal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30209923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com