2014-11-04 83 views
0

我想更新力度指向圖中圓形元素的半徑,但是當我想選擇d3.js對象時,出現錯誤undefined is not a functiond3.js中圓形元素的更新半徑

這裏是svg元素的結構

enter image description here

Click事件,從而引發新的半徑

$("#resizeN").on("click",function(){ 

    for (var i = 0; i < nodes.length; i++){ 
     var f = d3.select("svg #n" + (i+1).toString().attr("r", function (n){ 

      return 30 * graph.nodeSizeFactor; 
     })); 
    } 
}); 

complete sample

回答

2

你在你的函數有一個放錯地方的括號,它笑如下所示:

for (var i = 0; i < nodes.length; i++){ 
    var f = d3.select("svg #n" + (i+1).toString()).attr("r", function (n){ 

     return 30 * graph.nodeSizeFactor; 
    }); // moved it from here to before the .attr 
} 

但是,如果不理解代碼的其餘部分,這看起來並不像典型的「D3方式」。有沒有一個普通的類可以應用到這些節點,然後用類似的東西來選擇它們?

d3.selectAll('.mycircles').attr('r', function(d) { 
    return 30 * graph.nodeSizeFactor; 
}); 
+0

括號是對的。是的,我可以用selectAll方法選擇節點。我沒有意識到我可以一次應用更多元素的attr方法。我是d3.js新手。謝謝 – Matt 2014-11-04 17:44:32