2016-02-17 132 views
-2

我正在使用d3和javascript,我对他们是新手。我试图通过匿名函数内部变量点击,但我不能得到它的work.Here是一个例子:访问d3匿名函数内部的局部变量

var someVariable=xyz; 
var mapModel=someObj; 


svg.append("g") 
    .style("display","table") 
    .style("margin","0 auto") 
    .data(topojson.feature(mapModel, mapModel.objects[objdisplay]).features) 
    .enter() 
    .append("path") 
    .attr("id", function(d) { return d.id; }) 
    .attr("d", this.path) 
    .on("click",function(d){ 
      alert(someVariable + d.id) 
    }); 

我需要访问somevariable匿名函数内部的点击,但似乎无法得到它工作。这个问题可能之前已经问过,但有人可以帮助我走向正确的方向。谢谢

+4

这看起来有效。在函数作用域外声明的变量可以被函数作用域内的所有东西访问。 – lxe

+0

@Ixe对不起,但它无法访问那里。在开发者控制台,它不给出可用的错误。我只能访问'd' – AngryLeo

+2

试试这个在你的控制台来演示它作为一般情况: ' var someVariable ='hello'; 的setTimeout(函数(){ 警报(someVariable + '世界');} ,1000);' – lxe

回答

-2

你不能访问'someVariable'在你的点击功能这种方式。 试试这个...

var someVariable=xyz; 
svg.append("g") 
    .style("display","table") 
    .style("margin","0 auto") 
    .enter() 
    .append("path") 
    .data([{'someVariable':someVariable}]) 
    .on("click",function(d){ 
      alert(d.someVariable + d.id) 
    }); 
+0

为什么downvote?我可以知道原因吗?我做错了什么? – Harshal

相关问题