2012-12-13 9 views
18

Czy można dołączyć płótno SVG do elementu innego niż <body> przy użyciu D3.js, jeśli skrypt nie znajduje się w tym elemencie?Dołączanie kanwy SVG do elementu innego niż ciało za pomocą D3

Na przykład, poniższy kod nie działa:

<html> 
<body> 
<script src="../../d3.v2.js"></script> 
<script> 
    var vis = d3.select("#container") 
     .append("svg:svg") 
      .attr("width",w) 
      .attr("height",h); 
</script> 

<div id="container"></div> 

</body> 

Wszystkie przykłady widziałem wykorzystanie d3.select("body").append.... ale wyraźnie nie zawsze chce się natychmiast dołączyć płótno do ciała.

Znalazłem, że jeśli <script> znajduje się wewnątrz pojemnika div, mogę użyć d3.select("#container"), ale wydaje mi się dziwne, że będę musiał dołączyć mój skrypt do konkretnego kontenera (ów), gdzie chcę płótno.

Odpowiedz

19

Próbujesz wybrać #container, zanim ono istnieje. Będziesz musiał umieścić swój kod na onload lub przenieść skrypt poniżej na stronie #container.

+0

Skrypt obejmuje również należą do 'header'. – bobthyasian

+1

To kwestia dyskusyjna, ponieważ niektórzy ludzie lubią umieszczać wszystkie lub większość skryptów na końcu strony, aby zapobiec blokowaniu wczytywania i renderowania strony. – Zikes

+0

Cudownie, dziękuję za szybką odpowiedź. Działa jak urok - pomaga mi również lepiej zrozumieć, jak działają selektory d3. – Gilman

Powiązane problemy