Javascript 为什么在d3.behavior.drag()中没有定义'd'
我在试着使一个圆圈可以拖动Javascript 为什么在d3.behavior.drag()中没有定义'd',javascript,svg,d3.js,Javascript,Svg,D3.js,我在试着使一个圆圈可以拖动 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)
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 ] + ")"
})
})
这是你的电话号码
它在右红色圆圈上的每一步都会抛出错误,但为什么它会说第3、4和5行中的d
未定义?更新:
将d
定义为var d=d3.event代码>
不过,稍后这里没有定义x和y:返回“translate(“+[x,y]+”)
。我不知道你想在那里做什么。工作小提琴:
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
知道为什么吗?所有示例似乎都将d
作为处理程序的第一个参数。文档中没有:“drag”:在拖动元素时激发。d3.event将包含表示当前绝对拖动坐标的“x”和“y”属性…@Joe:是的。文档对回调的调用非常模糊。我想知道为什么我能找到的所有例子都接受一个论点,它必须是一个更早的版本或什么的。(这是我的+1 btw)为什么是-1?“不有用”是downvote按钮所说的,而这并不是远程“不有用”。参见第2点: