2015-04-16 12 views
5

d3.js bu iki kod blokları arasındaki fark nedir, ama aşağıdaki iki kod blokları farklı sonuçlar verir bulmak:Ben d3.js <code>append</code> fonksiyon seçimi eklenen nesneyi döndüren düşünmüştü

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 + ")"); 
does

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 + ")"); 

: sol ve üst farkla ve mahsup, grafik grubunu çevirmek görünmüyor

.

Bu, SVG/d3.js'de çalışma şekli hakkında ne anlamıyorum?

+1

Her ikisi de aynı sonucu vermelidir. Sorunu gösteren tam bir örnek gönderir misiniz? –

+0

Hmm, [her ikisi de snippet'leri] denedim (http://plnkr.co/edit/RaPMhaBJzDLhDyPd6EeD?p=preview). Tam olarak aynı sonuçları üretirler. ' ve" ' – Mark

+0

Sanırım, ek öğeleri eklemek için svg'yi kullandığınızı tahmin ediyorum - ilk durumda, 'svg' SVG öğesini ve ikincisinde ise g' elemanını çevirir. Yani ilk durumda "svg" ye eklediğiniz herhangi bir şey tercüme edilmez (çünkü "g" öğesinde yer almaz). –

cevap

2

Her iki kod bloğu da tam olarak aynı sonucu vermelidir.

Sanırım ek öğeler eklemek için svg kullanıyorsunuz - ilk durumda, svg öğesinin SVG öğesine ve ikinci olarak çevrilmiş g öğesinin olduğunu unutmayın. Yani, ilk durumda svg'a eklediğiniz herhangi bir şey tercüme edilmez (çünkü yeni elemanlar g öğesinde bulunmaz).