Javascript 如何在函数外部更新d3js元素属性?

Javascript 如何在函数外部更新d3js元素属性?,javascript,d3.js,Javascript,D3.js,我有一个基于数据生成图形的函数。在这里面,我初始化了d3js,并将onclick事件添加到散点图中 function gen_graph(data) { // Some other code in middle var svg = d3.select("#chart").append("svg") .attr("width", width + margin.left + margin.right)

我有一个基于数据生成图形的函数。在这里面,我初始化了d3js,并将onclick事件添加到散点图中

 function gen_graph(data) {
                    // Some other code in middle 
    var svg = d3.select("#chart").append("svg")
                .attr("width", width + margin.left + margin.right)
                .attr("height", height + margin.top + margin.bottom)
                .append("g")
                .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

   svg.selectAll(".dot")
      .data(gdata)
      .enter().append("svg:circle")
      .on("click", function(d) {
            svg.selectAll(".dot").style("fill","#cfcfcf");
            d3.select(this).style("fill","red");
       })
    }
当前在我的
onclick()
中,我正在使用
d3。选择(this)
获取对象并更新其当前值,因此我无法在函数gen\u graph()之外引用它


我还有另一个函数,比如说函数
fun1()
,它在某些事件中想要触发
svg.on(“单击“…”)
。如何在
gen_graph()
的范围之外访问svg?

我无法在这里获得您想要的内容。意义上的外部功能。哪些函数需要使用onclick?如果其他函数想要使用它。你可以把这个onclick添加到函数中,我已经更新了这个问题。希望这能说明问题。基本上,我想在启动fun1()时,在gen_Graph()的范围之外访问svg.onclick。您需要
svg.on(“单击”..
是吗?是的。这正是我想要的。解决方法之一是将svg和d3相关变量设置为全局变量。但我不希望污染全局名称空间。在函数生成图中为单击编写函数,并在需要时使用新创建的onclick函数调用单击函数.如果你还面临任何问题,提供一把小提琴?