D3.JS Динамически заменить <tspan>

Я использую пример солнечных лучей в качестве основы и пытаюсь изменить многослойный заголовок при клике с новыми данными. Функция щелчка выглядит так:

function click(d) {

text.transition().attr("opacity", 0);

console.log(d.depth);

path.transition()
    .duration(750)
    .attrTween("d", arcTween(d))

.each("start", function(e, i) {

    if (e.x >= d.x && e.x < (d.x + d.dx))

    {
        var replaceText = d3.select(this.parentNode).select("text")
        replaceText.remove("tspan")

        var tspan = replaceText.append("tspan")
            .attr("class", "sunburst2")
            .attr("x", 0)
            .attr("y", 0)
            .attr("text-anchor", "middle")
            .text("TEST");

    }

})

//each
.each("end", function(e, i) {

    if (e.x >= d.x && e.x < (d.x + d.dx))

    {

        var arcText = d3.select(this.parentNode).select("text")

        arcText.transition().duration(750)
            .attr("opacity", 1)
            .attr("transform", function(d) {
                return "translate(" + getCentroid(d) + ")rotate(" + textRotation(d) + ")";
            })
            .attr("text-anchor", "middle")


    }

});
//end of each

}

PS: в этом примере начальные заголовки должны быть заменены на "ТЕСТ".

Но это не работает и ничего не показывает. Что я делаю не так? Заранее спасибо. Любые советы будут полезны.

1 ответ

Я нашел решение с помощью экспериментов. Вместо того, чтобы использовать replaceText.remove("tspan") ты должен использовать replaceText.selectAll("*").remove();

Бинго!

Другие вопросы по тегам