【发布时间】:2019-02-13 06:38:12
【问题描述】:
我正在尝试应用this 建议来捕捉几个转换的结束。
但是在我的本地文件中,我收到了 Uncaught TypeError: t.call is not a function 错误。代码如下:
var svg = d3.select('svg');
function endall(transition, callback) {
if (typeof callback !== "function") throw new Error("Wrong callback in endall");
if (transition.size() === 0) { callback() }
var n = 0;
transition
.each(function() { ++n; })
.each("end", function() { if (!--n) callback.apply(this, arguments); });
}
for (var i=0;i<5;i++) {
svg.append('rect')
.attr("x",i*60)
.attr("y",50)
.attr("height",50)
.attr("width",50)
.style("fill","#ff0000");
}
svg.selectAll("rect:not(.active)")
.transition()
.duration(1000)
.style("fill","#00ff00")
.call(endall, function() { alert("all done") });
当我使用 D3 模板将其移植到 jsfiddle 时,它运行良好。另一方面,当我在没有 D3 模板的情况下将其移植到 jsfiddle 时,我得到了同样的错误。
显然我遗漏了什么,但我无法理解。
【问题讨论】:
标签: javascript d3.js transition jsfiddle