2012-12-13 47 views
18

如果腳本不在該元素內,是否可以使用D3.js將一個SVG畫布附加到除<body>之外的元素?將SVG畫布附加到使用D3的身體以外的元素

例如,下面的代碼無法正常工作:

<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"),但它似乎很奇怪,我認爲我會包括,我想在畫布上的特定容器(S)的內部我的腳本。

回答

19

您正試圖選擇#container,然後它才存在。您需要將代碼放入onload或將腳本移動到頁面中的#container以下。

+0

此外,腳本包含屬於'header'。 – bobthyasian

+1

這是一個值得商榷的問題,因爲有些人喜歡將所有或大部分腳本放在頁面的末尾,以防止它阻止頁面加載和渲染。 – Zikes

+0

很好,謝謝你的快速回復。像魅力一樣工作 - 也幫助我更好地理解d3選擇器的工作原理。 – Gilman