У меня есть этот код:
var series, seriesChildren;
selection.each(function (data) {
series = d3.select(this).selectAll('.my-series').data([data]);
series.enter().append('g').classed('my-series', true);
console.log(data);
seriesChildren = series.selectAll('.seriesChild')
.data(data, function (d) {
return d.x;
});
seriesChildren.enter()
.append('g')
.classed('seriesChild', true);
}
И я не понимаю, почему это дает мне следующее:
<g class="my-series"></g>
без детей.
Так должно быть:
<g class="my-series">
<g class="seriesChild"></g>
<g class="seriesChild"></g>
...
</g>
Я сделал console.log(data)
и мои данные хороши, в нем есть тысячи элементов.
Он работает, выполняя seriesChildren = d3.selectAll('.my-series').selectAll('.seriesChild')
но не работает с seriesChildren = series.selectAll('.seriesChild')
Я использую D3JS v4.
Эти два утверждения отличаются 1. seriesChildren = series.selectAll('.seriesChild')
2. seriesChildren = d3.selectAll('.my-series').selectAll('.seriesChild')
В первой серии нет элемента DOM, поэтому seriesChildren = d3.selectAll('.my-series').selectAll('.seriesChild')
не будет работать так, как вы ожидаете
тогда как во втором случае d3.selectAll('.my-series')
это представляет собой элемент DOM и продолжит d3.selectAll('.myseries').selectAll('.seriesChild')
выберет другой элемент DOM.