Con d3.js voglio trasformare la x
di un group
molte volte (ad es. Facendo clic su un pulsante di una causando una trasformazione per ogni clic), a partire da la posizione attuale del gruppo. Il problema è Non riesco a recuperare la x del gruppo e, anche se trovo, non riesco a trovare alcuna funzione incorporata che mi permetta di cambiare il x
di un gruppo a partire dal suo attuale x
. Mi sto perdendo qualcosa di importante? È molto strano che non riesca a ottenere lo x
di un elemento aggiunto a uno "stage" SVG.D3, recuperare la posizione x di un elemento <g> e applicare multipla trasformare
Il mio codice è il seguente (modificato per Lars): Ho creato i nodi nel modo in cui mi hai suggerito ieri (clonandoli).
var m=[5,10,15,20,25,30];
var count=0;
d3.select('svg').on("mouseup", function(d, i){
count+=0.5;
var n = d3.selectAll(".myGroup");
n.each(function(d,i) {
if(i!=0){
// here I need to know the current x of the current n element but I
// can't get it
// this causes error "Uncaught TypeError: undefined is not a function"
// var currentx = d3.transform(this.attr("transform")).translate[0];
this.setAttribute("transform", "translate("+((100/m[i])*count)+",10)");
}
});
});
Ciao Lars, ho aggiornato la questione per cercare di spiegare le cose meglio. – Steekatsee
Ho aggiornato la risposta. –
Lars, grazie mille: ho pensato che 'd3.selectAll (". MyGroup ")' ha causato il fatto che all'interno del corpo del ciclo 'this' era identico al risultato del tuo' d3.select (this) ' – Steekatsee