2015-04-16 14 views
5

Avevo pensato che le d3.js append funzione restituisce l'oggetto aggiunto ad una selezione, ma trovo i seguenti due blocchi di codice dare risultati diversi:Qual è la differenza tra questi due blocchi di codice in d3.js

var svg = d3.select("body") 
    .append("svg") 
     .attr("width", fig_width) 
     .attr("height", fig_height); 

    svg.append("g") 
     .attr("class", "graph") 
     .attr("transform", 
       "translate(" + graph_margin.left + "," + graph_margin.top + ")"); 

che non sembra di tradurre il gruppo di diagrammi, compensando esso con un margine sinistro e superiore e:

var svg = d3.select("body") 
    .append("svg") 
     .attr("width", fig_width) 
     .attr("height", fig_height) 
    .append("g") 
     .attr("class", "graph") 
     .attr("transform", 
       "translate(" + graph_margin.left + "," + graph_margin.top + ")"); 

che fa.

Cosa non capisco del modo in cui funziona in SVG/d3.js?

+1

Entrambi dovrebbero dare lo stesso risultato. Puoi pubblicare un esempio completo per favore che dimostri il problema? –

+0

Hmm, ho appena provato [entrambi i snippet] (http://plnkr.co/edit/RaPMhaBJzDLhDyPd6EeD?p=preview). Producono esattamente gli stessi risultati. '' and ' ' – Mark

+0

Immagino che tu stia usando' svg' per aggiungere elementi aggiuntivi a - tieni presente che nel primo caso, 'svg' contiene l'elemento SVG e nel secondo l'elemento' g' tradotto. Quindi tutto ciò che si aggiunge a 'svg' nel primo caso non verrebbe tradotto (perché non è contenuto nell'elemento' g'). –

risposta

2

Entrambi i blocchi di codice devono fornire esattamente lo stesso risultato.

Suppongo che si stia utilizzando svg per aggiungere elementi aggiuntivi a: tenere presente che nel primo caso, svg contiene l'elemento SVG e nel secondo l'elemento g tradotto. Quindi tutto ciò che si aggiunge a svg nel primo caso non verrebbe tradotto (poiché i nuovi elementi non sono contenuti nell'elemento g).

Problemi correlati