为什么d3.ehavior.drag()中没有定义“d”

Why isnt `d` defined in d3.behavior.drag()

本文关键字:定义 ehavior d3 drag 为什么      更新时间:2023-09-26

我正在尝试制作一个可拖动的圆。

var drag = d3.behavior.drag();
  drag.on("drag", function(d,i) {
      console.log(d);
      d.x += d3.event.dx;
      d.y += d3.event.dy;
      //This will change the center coordinates by the delta
      d3.select(this).attr("x", d.x).attr("y", d.y);
      //This should change the upper left x and y values by the delta
      d3.select(this).attr("transform", function(d,i){
          return "translate(" + [ x,y ] + ")"
      })
  })

这是小提琴

它在右红圈上的每一个移动都会抛出错误,但为什么它说d在第3、4和5行中是未定义的呢?

工作小提琴:http://jsfiddle.net/6a6da/33/

d,i参数通常引用绑定的数据,但您不绑定任何数据。在您的情况下,只处理事件就足够了。

drag.on("drag", function() {
  d3.select(this).attr("cx", +d3.select(this).attr("cx") + d3.event.dx);
  d3.select(this).attr("cy", +d3.select(this).attr("cy") + d3.event.dy);
})l

更新:http://jsfiddle.net/6a6da/32/

将CCD_ 3定义为CCD_。

不过,稍后,x和y在这里是未定义的:return "translate(" + [ x,y ] + ")"。我不确定你想在那里做什么。