2012-12-13 4 views
18

Ist es möglich, einen SVG-Canvas an ein anderes Element als <body> mit D3.js anzuhängen, wenn sich das Skript nicht in diesem Element befindet?SVG-Canvas an ein anderes Element als den Körper anhängen mit D3

Zum Beispiel der folgende Code nicht funktioniert:

<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> 

Alle Beispiele, die ich d3.select("body").append.... Einsatz gesehen haben, aber klar haben wir nicht immer die Leinwand unmittelbar an den Körper angehängt werden soll.

Ich fand, dass, wenn die <script> innerhalb des Containers div ist, dann kann ich d3.select("#container") verwenden, aber es scheint mir seltsam, dass ich mein Skript innerhalb der spezifischen Container einschließen müsste, wo ich die Leinwand möchte.

Antwort

19

Sie versuchen, auszuwählen, bevor es existiert. Sie müssen Ihren Code in eine onload setzen oder das Skript unter #container auf der Seite verschieben.

+0

Auch Skript umfasst gehören in die 'header'. – bobthyasian

+1

Das ist ein strittiger Punkt, da einige Leute gerne alle oder die meisten Skripte am Ende der Seite platzieren, um zu verhindern, dass sie das Laden und Rendern der Seite blockiert. – Zikes

+0

Wunderbar, danke für die schnelle Antwort. Funktioniert wie ein Zauber - hilft mir auch, besser zu verstehen, wie die d3-Selektoren funktionieren. – Gilman

Verwandte Themen