1
匿名函数内部存在声明变量,当返回该变量时。问题是我似乎无法使用该变量,因为当我尝试返回它时,firebug
表示:TypeError: myData is undefined
。D3。匿名函数中的变量声明
这是我的代码:
select("circle")
.transition()
.attr("r", function(d) {
var myData = d3.select(this).datum();
return myData[0];
})
.duration(1000);
这return myData[0];
确实返回第一个数组元素,但我的动画需要不到1秒,这意味着.duration(1000);
不会被调用,因为有一个错误在那return myData[0];
,这是有点令人费解。
这就是我附上数据到圈子之前制作动画的尝试:
var valuesMatrix = [];
valuesMatrix[0] = [35, 21, 45, 71, 51, 32];
d3.selectAll("circle")
.data(valuesMatrix);
为什么return 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);
});
此代码是jsfiddle - ready。 这似乎是工作
http://jsfiddle.net/regpast123/axkbLp45/2/
你可以把它放在小提琴上。 – Cyril
你只需要'return d [0];'。错误消息表明您没有将任何数据绑定到您选择的元素。 –
我刚刚将它上传到jsfiddle,它似乎在工作,那么我的环境出现问题。你可以在说明中找到链接 – Benas