Javascript D3。匿名函数中的变量声明

Javascript D3。匿名函数中的变量声明,javascript,d3.js,Javascript,D3.js,匿名函数中有一个声明的变量,当它返回该变量时。问题是我似乎无法使用该变量,因为当我尝试返回它时,firebug会说:TypeError:myData未定义 这是我的代码: select("circle") .transition() .attr("r", function(d) { var myData = d3.select(this).datum(); return myData[0]; } )

匿名函数中有一个声明的变量,当它返回该变量时。问题是我似乎无法使用该变量,因为当我尝试返回它时,
firebug
会说:
TypeError:myData未定义


这是我的代码:

select("circle")
    .transition()
    .attr("r", function(d) { 
                var myData = d3.select(this).datum();
                return myData[0];
    } )
    .duration(1000);
返回myData[0]
确实返回了第一个数组元素,但是我的动画不到1秒,这意味着
.duration(1000)未被调用,因为
返回myData[0]时出错,这有点令人费解

这就是我在尝试设置圆动画之前将数据附加到该圆的方式:

  var valuesMatrix = [];
  valuesMatrix[0] = [35, 21, 45, 71, 51, 32];

  d3.selectAll("circle")
    .data(valuesMatrix);
为什么
返回myData[0]被认为是未声明的,即使它返回有效值


更新。按“矩形”以查看圆形动画:

var svgContainer = d3.select("body").append("svg")
                                  .attr("width", 200)
                                  .attr("height", 200);

svgContainer.append("circle")
                        .attr("cx", 40)
                        .attr("cy", 40)
                        .attr("r", 20);

var valuesMatrix = [];
  valuesMatrix[0] = [35, 21, 45, 71, 51, 32];

svgContainer.selectAll("circle")
    .data(valuesMatrix);

svgContainer.append("rect")
                   .attr("x", 90)
                   .attr("y", 10)
                   .attr("width", 80)
                   .attr("height", 20)
                   .on("click", function(d) {
                          var selectedGroups = d3.selectAll("circle")
                              .transition()
                              .attr("r", function(d) { 
                                    var myData = d3.select(this).datum();
                                    // return d[0];
                                    return myData[0];
                                } )
                          .duration(2000);
                     });
这段代码是JSFIDLE就绪的。 它似乎起作用了


错误消息表明您尚未将任何数据绑定到所选元素。此外,您可以简化代码:

.attr("r", function(d) { return d[0]; });

你能把这个放在小提琴上吗?你只需要
返回d[0]。错误消息表明您尚未将任何数据绑定到所选元素。我刚刚将其上载到JSFIDLE上,它似乎正在工作,我的环境出现了问题。您可以在中找到链接description@Lars科托夫就是这样。你可以写下来作为答案,我会接受的