У меня есть простая функция, которая должна отображать пару текстовых элементов.
function d3manipulation() {
var svg = d3.select("body").append("svg")
.attr("width", 500)
.attr("height", 500);
var nodes = [
{ "name": "Michael" },
{ "name": "John" }
];
svg
.selectAll("text")
.data(nodes)
.enter()
.append("text")
.text(function(d) { return d.name; });
}
Но на странице ничего не показывает. Консольных ошибок у меня тоже нет.
Однако inspector
показывает, что на самом деле есть элементы text
с данными.
<svg width = "500" height = "500">
<text>Michael</text>
<text>John</text>
</svg>
В чем проблема?
@ rioV8 Я пробовал с style> text { fill: "limegreen"; }
и с .attr("fill", "limegreen")
, и он добавил заливку атрибутов, но по-прежнему ничего не отображает
Попробуйте дать text
координаты x
, y
: developer.mozilla.org/en-US/docs/Web/SVG/Element/…
Кроме того, опубликуйте скрипку с рабочим кодом, чтобы мы могли точно видеть, что происходит.
Достаточно было дать ему x
и y
, как предложил @jrook. (заливка по умолчанию черная)
var svg = d3.select("body").append("svg")
.attr("width", 500)
.attr("height", 500);
var nodes = [
{ "name": "Michael" },
{ "name": "John" }
];
svg
.selectAll("text")
.data(nodes)
.enter()
.append("text")
.text(function(d) { return d.name; })
.attr('x', 20)
.attr('y', (d, i) => 30 + 20 * i);
<script src = "https://d3js.org/d3.v5.min.js"></script>
действительно, нужны были x
и y
. Или как всегда забыл про ES6.
присвойте
text
класс и установите для атрибутаfill
значениеlimegreen