使用d3.each()时无法访问它?

时间:2018-12-24 19:47:49

标签: d3.js

我正在尝试访问此this值,以使当前的DOM元素使用d3.each()进行迭代,因此我可以相对于当前的{{1 }}。这是代码的简化版本:

rects
rects

我很困惑为什么无法在const oldData = [10,20,30]; const newData = [40,50,60]; let data = oldData; function update() { if (data === oldData) { data = newData; } else if (data === newData) { data = oldData; } } const items = d3.select('div') .append('svg') .attr('width', 100) .attr('height', 100) .selectAll('.items') .data(data); items.enter() .append('rect') .attr('class', 'items') .attr('x', (d,i) => 10 * i) .attr('y', (d,i) => 10 * i) .attr('width', 5) .attr('height', 0) .transition() .duration(1000) .attr('height', d => d) .attr('fill', 'green') .transition() .delay(500) .each(d => { return d3.select('svg') .append('rect') .attr('x', d => d3.select(this).attr('x')) .attr('y', d => d3.select(this).attr('y') + 5) .attr('width', 5) .attr('height', 0) .attr('fill', 'black') .transition() .attr('height', d => d - 5) }) .merge(items) .attr('fill', 'blue');中访问<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>title</title> </head> <body> <button onclick='update()'>Update</button> <div></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script> </body> </html>。我尝试将其this登录到控制台,并且它总是返回d3.each()。我尝试了比这更简单的示例,但似乎无法弄清楚。 this是不是正在迭代当前的DOM元素?

此外,我不确定该更新是否正确。

0 个答案:

没有答案