J'essaie certains d3 de base et j'ai essayé d'obtenir les attributs de chacun des rect
en utilisant d3 mais je ne peux rien obtenir.
Quand j'essaie d3.selectAll("rect")
, j'obtiens
Comment puis-je accéder aux attributs de rect
en utilisant quelque chose comme d3.selectAll("rect").select("part1").attr(...)
ou quelque chose de similaire? Je veux accéder à différents attributs de tous les rect
.
Vous pouvez obtenir n'importe quel attribut d'un élément en utilisant un getter:
d3.select(foo).attr("bar")
Qui est essentiellement la fonction attr()
avec un seul argument.
Voici une démo. Il existe deux classes de rectangles, part1
Et part2
. Je sélectionne tous les rectangles part1
Et j'obtiens leurs positions x:
var svg = d3.select("svg");
var rects = svg.selectAll("foo")
.data(d3.range(14))
.enter()
.append("rect")
.attr("fill", "teal")
.attr("y", 20)
.attr("x", d => 10 + 12 * d)
.attr("height", 40)
.attr("width", 10)
.attr("class", d => d % 2 === 0 ? "part1" : "part2");
d3.selectAll(".part1").each(function(d,i) {
console.log("The x position of the rect #" + i + " is " + d3.select(this).attr("x"))
})
<script src="https://d3js.org/d3.v4.min.js"></script>
<svg></svg>