更新d3.js中圆形元素的半径

时间:2014-11-04 17:01:57

标签: javascript jquery svg d3.js

我想在力导向图中更新圆形元素的半径,但是当我想选择d3.js对象时,我得到错误undefined is not a function

这是svg元素的结构

enter image description here

点击事件,触发新半径

    $("#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

1 个答案:

答案 0 :(得分: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
}

但是如果不了解其余的代码,这似乎不像典型的&#34; D3方式&#34;做事。是否有一个可以应用于这些节点的公共类,然后用类似的东西选择它们?

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