2013-04-02 28 views
1

我從here複製代碼。我的代碼與示例代碼基本相同,除了我在服務器上運行d3.layout.cloud.js。當我運行它時,我得到一個d3.layout.cloud不是函數的類型錯誤。這可能是什麼原因?TypeError:d3.layout.cloud不是函數

<!DOCTYPE html> 
<meta charset="utf-8"> 
<script src="../lib/d3/d3.js"></script> 
<script src="../d3.layout.cloud.js"></script> 
<body> 
<script> 
    var fill = d3.scale.category20(); 

    d3.layout.cloud().size([300, 300]) 
     .words([ 
     "Hello", "world", "normally", "you", "want", "more", "words", 
     "than", "this"].map(function(d) { 
     return {text: d, size: 10 + Math.random() * 90}; 
     })) 
     .rotate(function() { return ~~(Math.random() * 2) * 90; }) 
     .font("Impact") 
     .fontSize(function(d) { return d.size; }) 
     .on("end", draw) 
     .start(); 

    function draw(words) { 
    d3.select("body").append("svg") 
     .attr("width", 300) 
     .attr("height", 300) 
     .append("g") 
     .attr("transform", "translate(150,150)") 
     .selectAll("text") 
     .data(words) 
     .enter().append("text") 
     .style("font-size", function(d) { return d.size + "px"; }) 
     .style("font-family", "Impact") 
     .style("fill", function(d, i) { return fill(i); }) 
     .attr("text-anchor", "middle") 
     .attr("transform", function(d) { 
      return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")"; 
     }) 
     .text(function(d) { return d.text; }); 
    } 
</script> 
+0

位於服務器上的d3.layout.cloud.js文件在哪裏?與您的html文件相同的目錄?不同的目錄? –

回答

6

您確定您已將d3.cloud.layout.js放入服務器的正確文件夾中嗎?

我編輯你的代碼,以不存在的文件:

<script src="http://d3js.org/d3.v3.min.js"></script> 
<script src="https://gist.github.com/emeeks/3361332/raw/61cf57523fe8cf314333e5f60cc266351fec2017/d3.layout.cloud.js"></script> 

它似乎工作:

http://jsfiddle.net/fHBsS/

要看看這是否是引起您的問題,打開控制檯在鉻(ctrl-shift-j)中,看看是否有任何「加載資源失敗」錯誤。