You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

D3.js v7技术求助:如何将鼠标指向的圆形数据存入变量

解决D3.js v7中鼠标指向圆形数据存入变量的问题

你的问题出在错误地将console.log()的返回值赋值给了变量——console.log()本身没有返回有效数据(它的返回值是undefined),所以你需要直接把事件回调里的d(也就是对应圆形的数据)赋值给变量。

正确的实现方式

根据变量的使用场景,有两种写法:

1. 需要在事件回调外部访问该数据

先在事件函数外部声明变量,之后在mousemove回调里直接赋值:

// 声明在外部,方便后续其他逻辑访问
let selectedCircleData;

d3.selectAll('circle')
  .on('mouseover', function(e, d) {
    d3.select(this)
      .on("mousemove", (event, d) => {
        selectedCircleData = d; // 直接将数据d赋值给外部变量
        console.log("x10", d); // 保留打印验证数据
      })
      .style('fill', 'red');
  })

2. 仅在事件回调内部使用数据

直接在mousemove回调里声明并赋值变量即可:

d3.selectAll('circle')
  .on('mouseover', function(e, d) {
    d3.select(this)
      .on("mousemove", (event, d) => {
        const targetData = d; // 直接赋值数据d
        console.log("存储的数据:", targetData); // 打印验证
      })
      .style('fill', 'red');
  })

为什么之前的代码无效

你之前写的var A = console.log("x10", d),本质是把console.log()执行后的返回值(固定为undefined)赋值给了A,而不是把圆形对应的数据d赋值给变量,所以无法得到你需要的测量值和日期数据。

内容的提问来源于stack exchange,提问作者Tetsuochat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:35:29