Я столкнулся со странным аргументом, которого я не видел. В этом коде он помещает 'null' в атрибут, и я думаю, что этот null делает то, что получает, когда функция объединена в цепочку с другими.
1) Я хочу спросить вас, ребята, что NULL делает. (где ноль находится в коде ниже)
var t = svg.selectAll(".symbol").transition()
.duration(duration)
.attr("transform", "translate(0,0)")
.each("end", function() { d3.select(this).attr("transform", null); });
t.select("path.area")
.attr("d", function(d) { return area(d.values); });
t.select("path.line")
.style("stroke-opacity", function(d, i) { return i < 3 ? 1e-6 : 1; })
.attr("d", function(d) { return line(d.values); });
t.select("text")
.attr("transform", function(d) { d = d.values[d.values.length - 1]; return "translate(" + (w - 60) + "," + y(d.price / 2 + d.price0) + ")"; });
setTimeout(streamgraph, duration + delay);
2) Я предполагаю, переменная t написана, чтобы избежать повторяющихся аргументов преобразования. Тем не менее, я не понимаю порядок аргументации. Поскольку я думаю, это должно быть написано в следующем порядке.
svg.selectAll ('. Symbol'). Select ('path.area'). Attr ('d', function (d) {return area (d.values);}) .transition (). duration (duration) .attr ('transform', 'translate (0,0)') ....
Однако Согласно var t, select ('path.area') следует после перехода и продолжительности и даже после .each.
3) Последний вопрос, Для версий 4 и 5. каждый («конец» ...) должен быть .on («конец» .... верно?