59

次のコードを使用して、D3 を使用してマウスの位置を取得したかっただけです。

var x = 0;

svg.on('mousemove', function () {
   x = d3.mouse(this)[0];         
});

しかし、xは常に に等しくなり0ます。を使用すると、の内部で値が変更されてconsole.log()いることがわかりますが、外部では の初期値が取得されています。xfunction()x0

x値を保存して、後でアプリケーションで使用するにはどうすればよいですか?

4

6 に答える 6

8

chkaiserThe Composerがでコメントしたように、バージョン 6 ではアプローチが異なります。

var coordinates = d3.pointer(this);
var x = coordinates[0];
var y = coordinates[1];
var svg = d3.select('body').append('svg')
    .attr('width', 600)
    .attr('height', 600)
    .on('mousemove', (event) => {
      var coords = d3.pointer( event );
      console.log( coords[0], coords[1] ) // log the mouse x,y position
    });

詳細 @ D3 v6 移行ガイド

于 2020-12-06T18:20:47.610 に答える
1

次のようなものを試しているのではないかと思います:

var x = 0;

svg.on('mousemove', function () {
   x = d3.mouse(this)[0];         
});

console.log(x);

非常に速い手でない限り、マウスに手を伸ばしている間にスクリプト全体が実行されるため、これは常にコンソールに「0」を書き込みます。スニペットをコンソールに直接配置し、マウスを動かしてからコンソールに「x」と入力してみてください。最新の x 値が表示されます。

これが役に立てば幸いですが、質問を誤解している可能性があります。

于 2015-02-23T16:06:54.273 に答える