javascript - javascript D3 中的变量范围

标签 javascript variables d3.js

我对变量范围有疑问。在下面的代码中,我有两个变量,我想为它们分配一些值,然后在代码中使用这些值。 变量是:eSVG、originMouse。 当我使用 mousedown 事件函数时,我分配它们的值,然后尝试在 mousemove 事件函数中使用这些值,但我总是得到未定义的值。 你能告诉我这里发生了什么吗?

谢谢大家

var eSVG, originMouse;

svg.on("mousedown", function() {
     eSVG= this,  // svg element
     originMouse = d3.mouse(eSVG),  // mouse origing
     rect = svg.append("rect").attr("class", "zoom");
     originMouse[0] = Math.max(0, Math.min(width, originMouse[0]));
     originMouse[1] = Math.max(0, Math.min(height, originMouse[1]));
   })
.on("mousemove", function() {
    console.log(eSVG);                          **// undefined**
    var m = d3.mouse(eSVG);
    console.log(originMouse);                   **// undefined** 
    m[0] = Math.max(0, Math.min(width, m[0]));
    m[1] = Math.max(0, Math.min(height, m[1]));
    rect.attr("x", Math.min(originMouse[0], m[0])-130)
        .attr("y", Math.min(originMouse[1], m[1])-80)
        .attr("width", Math.abs(m[0] - originMouse[0]))
        .attr("height", Math.abs(m[1] - originMouse[1]));
  })

最佳答案

这是我在考虑了 Dogbert 的评论后所做的事情:

 var eSVG, originMouse;

 svg.on("mousedown", function() {
 eSVG= this,  // svg element
 originMouse = d3.mouse(eSVG),  // mouse origing
 rect = svg.append("rect").attr("class", "zoom");
 originMouse[0] = Math.max(0, Math.min(width, originMouse[0]));
 originMouse[1] = Math.max(0, Math.min(height, originMouse[1]));

    svg.on("mousemove", function() {
        console.log(eSVG);                          **// defined **
        var m = d3.mouse(eSVG);
        console.log(originMouse);                   **// defined ** 
        m[0] = Math.max(0, Math.min(width, m[0]));
        m[1] = Math.max(0, Math.min(height, m[1]));
        rect.attr("x", Math.min(originMouse[0], m[0])-130)
           .attr("y", Math.min(originMouse[1], m[1])-80)
           .attr("width", Math.abs(m[0] - originMouse[0]))
           .attr("height", Math.abs(m[1] - originMouse[1]));
     })
  d3.event.stopPropagation();
})

关于javascript - javascript D3 中的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17062183/

相关文章:

php - 从 PHP 从 HTML 表单调用输入时的未定义值

在 C 中更改线程中的变量

javascript - 我应该将 $(document).height() 和/或 $(window).height() 存储为变量吗?

javascript - 为什么要从标签名称中删除空格?

javascript - 大型 javascript 文件的最佳实践?

javascript - 将相同的更改功能应用于多个 div?

javascript - AMD 格式是否要求模块是单例的?

javascript - 带有 websocket 接口(interface)的数据库?

javascript - D3 饼图中的每个选择

javascript - 使用 d3 在旋转的线上画笔以创建缩放效果