web-dev-qa-db-fra.com

d3.select par valeur d'attribut

Je suis nouveau sur d3. J'ai quelque chose de défini comme ceci:

node = node.enter().append("circle")
            .attr('id', function(d){ return d.id; })
            .attr("class", "node")
            .on('mouseover', mouseover_node)
            .on("click", nodeClick);

Maintenant, dans la fonction nodeClick, je veux accéder à un nœud (ou cercle) avec un identifiant spécial. Je cherche quelque chose que je pourrais utiliser comme ceci:

for(var i=0;i<maxId;i++) {
    d3.select(the node with id = i).do....

Est-ce que quelqu'un sait comment je peux faire ça?

25
Milad

Votre problème est que ids et names doivent commencer par une lettre . Modifiez donc votre code pour ajouter une chaîne à chaque id, par exemple.

.attr('id', function(d){ return 'name' + d.id; })

Ensuite, vous pouvez sélectionner un nœud donné en utilisant d3.select( '#name' + i ). De les docs sur les sélections D3:

... vous pouvez sélectionner par tag ("div"), classe (".awesome"), identifiant unique ("#foo"), attribut ("[color = red]") ou confinement ("parent child") .

44
mdml