【问题标题】:d3.js undefined data value in callback function click event [duplicate]回调函数单击事件中的d3.js未定义数据值[重复]
【发布时间】:2021-07-22 16:10:14
【问题描述】:

我正在尝试将值传递给 d3 点击事件绑定到由圆圈和字母组成的组。然而,这个值在回调函数中仍然是 'undefined'。另一方面,如果我将相同的值传递给同一组的另一个函数,例如 .text(d => d.value) 工作正常。问题仅在于单击事件。请找到我的一段代码:

//The parent svg
var s = d3.select("#"+this.id) //this refers to the current object
        .append("svg")
        .attr("id",this.svgid)
        .attr("width","100%")
        .attr("height","100%");

//The value to be passed to the click event
const dd = [{value:"whatever"}];
            
var group1 = s.data(dd).append("svg:g");

//First element of the group = a circle
group1.append("svg:circle")
        .attr("cx","85%")
        .attr("cy","20%")
        .attr("r","10px")
        .attr("fill","#FFFFFF");

//Second element of the group = letter i
group1.append("svg:text").text("i")
        .attr("x","85%")
        .attr("y","25%")
        .attr("fill","#555555");

group1.append("svg:text").text(d => d.value).attr("x","50%").attr("y","50%");//This line works fine

group1.on("click",d => console.log(d.value));//This line returns 'undefined'--> Why?

我尝试了几种类型的回调函数,例如 function(d){console.log(d.value);} 但没有成功。有什么想法吗?

【问题讨论】:

  • 你使用 D3 V6 吗?
  • 我用的是D3 V6.7.0

标签: d3.js events callback


【解决方案1】:

替换

group1.on("click",d => console.log(d.value));

与

group1.on("click",(e, d) => console.log(d.value));

从 D3 V6 开始,事件作为第一个参数传递给鼠标事件回调

【讨论】:

  • 已解决。谢谢迈克尔,你让我很开心
猜你喜欢
  • 1970-01-01
  • 2014-10-26
  • 2018-07-03
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多