Javascript d3.js要更改dragend上的节点样式吗

Javascript d3.js要更改dragend上的节点样式吗,javascript,d3.js,Javascript,D3.js,我有一个d3.js图,允许用户点击并拖动节点。一旦他们拖动一个节点,我就认为它是“固定的”。一旦它得到修复,我想通过将节点的笔划更改为不同的颜色,直观地显示已修复节点和未修复节点之间的差异 然而,我不知道该把改变笔划宽度的逻辑放在哪里。现在,我在最初绘制圆时使用了逻辑,但在拖动节点后,它不会得到更新。我应该把逻辑检查和样式更改放在哪里 这是我的密码。请注意节点末尾的.style更改。追加(“圆”) 我的csv如下所示: source,target,value Dork Tower,Nur Pea

我有一个d3.js图,允许用户点击并拖动节点。一旦他们拖动一个节点,我就认为它是“固定的”。一旦它得到修复,我想通过将节点的笔划更改为不同的颜色,直观地显示已修复节点和未修复节点之间的差异

然而,我不知道该把改变笔划宽度的逻辑放在哪里。现在,我在最初绘制圆时使用了逻辑,但在拖动节点后,它不会得到更新。我应该把逻辑检查和样式更改放在哪里

这是我的密码。请注意
节点末尾的
.style
更改。追加(“圆”)

我的csv如下所示:

source,target,value
Dork Tower,Nur Peanuts!,0
Dork Tower,Hepta,1
Snake Pit,Lucky Captain,0
Snake Pit,Alien Wars,0
Snake Pit,Full Moon Jacket,1
Dork Tower,Crystal Faire,1
Buffy the Vampire Slayer,Twixt,1
Buffy the Vampire Slayer,Hepta,1
Abduction,Leipzig,0
Dork Tower,Astro Drive,0
Abduction,Snake Pit,0

当您在
append(“圆圈”)
之后设置
stroke
属性时,所做的事情就完成了。笔划颜色将是您当时设置的颜色,即
d.fixed!==true
且笔划为绿色

绘制后更改笔划颜色的正确方法

  function dragended(d) {
        if (!d3.event.active) force.alphaTarget(0);
        d.fixed = true;
        if (d.fixed == true) {
              d.fx = d.x;
              d.fy = d.y;
        }
        else {
              d.fx = null;
              d.fy = null;
        }
        d3.select(this) // `this` is the node where drag happend
          .select("circle")
          .style("stroke", "grey");
    };

  function dragended(d) {
        if (!d3.event.active) force.alphaTarget(0);
        d.fixed = true;
        if (d.fixed == true) {
              d.fx = d.x;
              d.fy = d.y;
        }
        else {
              d.fx = null;
              d.fy = null;
        }
        d3.select(this) // `this` is the node where drag happend
          .select("circle")
          .style("stroke", "grey");
    };