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科托夫就是这样。你可以写下来作为答案,我会接受的