2015-11-30 90 views
0

链接请参阅想普拉克:http://plnkr.co/edit/2lvNHxvLEsNpVqNqmDUX?p=preview无法外部JavaScript与D3JS

我试图绘制使用D3JS使用JavaScript的圆。我的script.js文件有定义的圆。

d3.select("body") 
    .append("svg") 
    .attr("width",50) 
    .attr("height",50) 
    .append("circle") 
    .attr("cx",25) 
    .attr("cy",25) 
    .attr("r",25) 
    .style("fill","purple"); 

但它不会出现在D3圈标题后的html中。有人能告诉我我做错了什么吗?

<!DOCTYPE html> 
<html> 

    <head> 
    <script data-require="[email protected]*" data-semver="3.5.3" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="script.js"></script> 
    <title>D3JS Demo - Drawing Shapes</title> 
    </head> 

    <body> 
    <h3>SVG Bar</h3> 
    <svg> 
     <rect width="50" height="200" style="fill:blue"></rect> 
    </svg> 

    <h3>D3 Bar</h3> 
    <script> 
     d3.select("body") 
     .append("svg") 
     .append("rect") 
      .attr("widt ah",50) 
      .attr("height",200) 
      .style("fill","blue"); 
    </script> 

    <h3>SVG Circle</h3> 
    <svg width="50" height="50"> 
     <circle cx="25" cy="25" r="25" style="fill:blue"></circle> 
    </svg> 

    <h3>D3 Circle</h3> 

    </body> 

</html> 

回答

2

你需要添加scripth3之后,而不是head,像这样:

<h3>D3 Circle</h3> 
<script src="script.js"></script> 

没有body元素在正在执行的script此刻还不存在。这意味着如果脚本在头部运行,d3.select("body")将为空。

http://plnkr.co/edit/Xofci5Rm9XdpsP1zqu8a?p=preview

+0

是工作,我就接受你的答案,但你能解释一下为什么这个工作? – takeradi

+0

你刚刚编辑的帖子与解释。大!谢谢! – takeradi