Javascript 如何从d3功能在控制台中打印

Javascript 如何从d3功能在控制台中打印,javascript,d3.js,Javascript,D3.js,我有这个函数来画矩形: draw(data) { this.canvas.selectAll('rect') .data(data) .enter() .append('rect') .attr('x', (d) => d.x) .attr('y', (d) => d.y) .attr('width', (d) => d.width) .attr('heigh

我有这个函数来画矩形:

draw(data) {
    this.canvas.selectAll('rect')
        .data(data)
        .enter()
        .append('rect')
        .attr('x', (d) => d.x)
        .attr('y', (d) => d.y)
        .attr('width', (d) => d.width)
        .attr('height', (d) => d.height)
        .style('fill', (d) => d.color);
}
我想在控制台d.x和d.y中打印。我编写了这个函数:

printData(data) {
    this.canvas.selectAll('rect')
        .data(data)
        .enter()
        .append('rect')
        .attr('x', function(d) { console.log(d.x); });
}

但它并没有在控制台中打印任何内容。有人能帮我指出我做错了什么吗?

我想你是在
绘图之后马上打电话给
printData
。如果是这种情况,您将看不到任何内容,因为您的“enter”选择是空的(因此,
enter()
之后不会调用任何内容)

在这种情况下,解决方案就是将
console.log
移动到
draw
或在
printData
中使用
each()

printData(data) {
    this.canvas.selectAll('rect')
        .each(function(d) { 
            console.log(d.x); 
        });
}