Javascript d3.js-未捕获的TypeError:Object[Object Object]没有方法';getBoundingClientRect';
请找到这个: 在JSFIDLE图表上运行良好。我可以通过单击在图表上绘制一个点。 但是,当我将此代码集成到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;
主干中并使用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());