我被我的JavaScript / d3代码所带来的奇怪行为所困扰。我have elements我已经指定onclick
处理程序将d3与.on("click", ...
一起使用,但这些元素的行为就像它们仅在我的页面加载时被点击一样,而不是在我点击它们时
我怀疑我做了一些根本错误的事情,但无法弄清楚它是什么。如何在点击时运行onclick
处理程序,而不是在我的页面加载时运行?
答案 0 :(得分:2)
在不了解D3的情况下,我猜测它是因为你正在做这个
d3.select("#distancefig").on("click", updatePlot('distancefig', false));
而不是这个
d3.select("#distancefig").on("click", function() {
updatePlot('distancefig', false)
});
当您打算提供被调用时,您正在进行函数调用。
答案 1 :(得分:1)
因为你没有将这些函数绑定为事件处理程序,所以你调用这些函数并将它们的返回值用作事件处理程序。
您可以使用函数表达式创建可以绑定为事件处理程序的函数引用。在函数表达式中,您可以使用现在的函数调用:
d3.select("#distancefig").on("click", function(){
d3.event.preventDefault();
updatePlot('distancefig', false));
});
d3.select("#speedfig").on("click", function(){
d3.event.preventDefault();
updatePlot('speedfig', false));
}),