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
相关产品推荐
相关产品推荐

