У меня есть эта структура (SVG круг генерируется из CorelDRAW):
<g class="item">
<circle class="grad Pazin" fill="#FEFEFE" transform="matrix(0.415112 -0.0050718 0.0050718 0.415112 342.854 286.821)" r="7"/
<circle class="grad Rijeka" fill="#FEFEFE" transform="matrix(0.415112 -0.0050718 0.0050718 0.415112 415.165 269.91)" r="7"/>
</g>
и я хочу эту структуру:
<g class="item">
<circle class="grad Pazin" fill="#FEFEFE" transform="matrix(0.415112 -0.0050718 0.0050718 0.415112 342.854 286.821)" r="7"/
<text xmlns="http://www.w3.org/1999/xhtml" font-family="sans-serif" font-size="20px" fill="black">0</text>
<circle class="grad Rijeka" fill="#FEFEFE" transform="matrix(0.415112 -0.0050718 0.0050718 0.415112 415.165 269.91)" r="7"/>
<text xmlns="http://www.w3.org/1999/xhtml" font-family="sans-serif" font-size="20px" fill="black">1</text>
</g>
Я опробовал опцию, но это генерирует текстовый узел внутри узла круга.
var grad = karta.selectAll("g.item circle");
var data = grad.append("text")
.text(function(d, i) {return i+1;})
.attr("font-family", "sans-serif")
.attr("font-size", "20px")
.attr("fill", "black");
Я тоже нахожу ответ на этот вопрос:
d3.js - как вставить новые родственные элементы и применить его для моего случая:
var grad = karta.selectAll("g.item circle").each(function() {
var t = document.createElement("text");
this.parentNode.insertBefore(t, this.nextSibling);
});
var data = karta.selectAll("g.item text")
.text("function(d, i) {return i+1;}")
.attr("font-family", "sans-serif")
.attr("font-size", "20px")
.attr("fill", "black");
Текстовые узлы генерируются в DOM, как я хотел, но текст по какой-то причине не отображается.
Как я могу решить эту проблему? Мне нужно создать текст для каждого круга.