2014-11-04 86 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