使用D3将SVG画布附加到除body之外的元素

Gil*_*man 19 html javascript svg d3.js

<body>如果脚本不在该元素内,是否可以将SVG画布附加到除使用D3.js之外的元素?

例如,下面的代码不起作用:

<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>
Run Code Online (Sandbox Code Playgroud)

我见过的所有示例都使用d3.select("body").append....但很明显我们并不总是想要将画布立即附加到正文中.

我发现如果<script>它在容器div中,那么我可以使用,d3.select("#container")但对我来说似乎很奇怪,我必须将我的脚本包含在我想要画布的特定容器中.

Zik*_*kes 21

你试图#container在它存在之前进行选择.您需要将代码放入onload或移动#container页面下方的脚本.