Javascript d3.js-未捕获的TypeError:Object[Object Object]没有方法';getBoundingClientRect';

Javascript d3.js-未捕获的TypeError:Object[Object Object]没有方法';getBoundingClientRect';,javascript,jquery,backbone.js,d3.js,jsfiddle,Javascript,Jquery,Backbone.js,D3.js,Jsfiddle,请找到这个: 在JSFIDLE图表上运行良好。我可以通过单击在图表上绘制一个点。 但是,当我将此代码集成到主干中并使用grunt构建时,它会给我一个错误未捕获的类型错误:Object[Object Object]没有方法“getBoundingClientRect” 请在下面找到单击事件的代码: // Ignore the click event if it was suppressed if (d3.event.defaultPrevented) { return;

请找到这个:

在JSFIDLE图表上运行良好。我可以通过单击在图表上绘制一个点。 但是,当我将此代码集成到
主干中并使用
grunt
构建时,它会给我一个错误
未捕获的类型错误:Object[Object Object]没有方法“getBoundingClientRect”

请在下面找到
单击
事件的代码:

// Ignore the click event if it was suppressed
              if (d3.event.defaultPrevented) { return; }              
            var myElem = this.$('#point');            
             if (myElem == null) 
              {
              // Extract the click location\    
              var point = d3.mouse(d3.select("g")), p = {x: point[0], y: point[1] };              
              // Append a new point
              this.svg.append("circle")
                  .attr("transform", "translate(" + p.x + "," + p.y + ")")
                  .attr("r", "5")
                  .attr("class", "dot")
                  .attr("id", "point")
                  .style("cursor", "pointer")
                  .call(this.drag);
                }
为什么它在JSFIDLE上运行正常,在本地机器上出现错误??


如何解决这个问题?您更改了JSFIDLE示例中的代码。您的JSFIDLE包含:

    var point = d3.mouse(this), 
        p = { x: point[0], y: point[1] };
此处显示的代码不同:

    var point = d3.mouse(d3.select("g")),
        p = { x: point[0], y: point[1] };
这就是产生误差的线:

未捕获类型错误:对象[Object Array]没有方法“getBoundingClientRect”

放在那里

    console.log(this);
    console.log(d3.select("g"));
您将在控制台中看到两个完全不同的对象。

需要DOM元素,而不是d3选择。请尝试以下方法:

var point = d3.mouse(d3.select('g').node());