2012-12-13 10 views
18

<body>以外の要素にSVGキャンバスを追加することはできますか?スクリプトがその要素の中にない場合はD3.jsを使用しますか?D3を使用してボディ以外の要素にSVGキャンバスを追加

例えば、以下のコードは動作しません:

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

私が使用d3.select("body").append....を見てきましたが、明らかに、我々は常に身体にすぐにキャンバスを追加したくないすべての例を。

<script>がコンテナdiv内にある場合は、d3.select("#container")を使用できますが、キャンバスが必要な特定のコンテナの内部にスクリプトを含める必要があることは奇妙に思えます。

答えて

19

#containerが存在する前に選択しようとしています。コードをonloadに入れてください。または、スクリプトを#containerの下のページに移動する必要があります。

+0

また、スクリプトには 'header'が含まれます。 – bobthyasian

+1

それは議論の余地があります。一部の人は、ページの最後にすべてまたはほとんどのスクリプトを置いて、ページの読み込みとレンダリングをブロックしないようにしています。 – Zikes

+0

素敵な、素早い対応に感謝します。魅力的な作品 - d3セレクターの仕組みを理解するのにも役立ちます。 – Gilman

関連する問題