如何在D3中调用'load'事件中的函数?

时间:2013-02-17 17:22:05

标签: javascript-events d3.js

为我的Javascript缺乏经验道歉。我是一名JavaScript和D3新手,试图从the subway wait assessment example调整Mike Dewar's Getting Started with D3 book

如给出的那样,示例加载时没有绘制任何地铁线 - 您必须单击一个来绘制它。我认为更改代码会很简单,以便在可视化启动时,默认情况下已经绘制了一条线(比如“A”线)。

我可以通过从Dewar脚本中的get_timeseries_data函数内部复制和粘贴部分代码来做到这一点(它执行一些检查并调用draw_timeseries函数)。但这似乎是错误的。编写函数的关键是我应该能够直接调用get_timeseries_data本身,不是吗?

由于Dewar的最终代码块使用selection.on('click'),模仿这个似乎是合乎逻辑的,但使用.on('load')代替:

d3.select('#Line_A_key')
  .on('load', get_timeseries_data);

将此添加到脚本末尾不起作用。它甚至没有在控制台中出错,所以我猜“加载”事件从未发生 - 为什么?

所以我想也许我可以直接调用get_timeseries_data函数而无需等待'load'事件:

d3.select('#Line_A_key')
  .get_timeseries_data();

但是抱怨说该对象没有方法'get_timeseries_data'。好的,这是事实,但是回答这个问题 - 当可以我在D3中调用一个函数时?

D3(或者它是JS的全部?)似乎在某些情况下需要一个以数据和索引作为参数的函数。我如何了解这些情况?如果我已经有这种形式的函数,我可以在这些情况之外调用它,还是我需要为其他情况编写一个全新的函数?

我无法通过浏览D3 API或从任何一个在线教程中回答这些问题,而且最不幸的是也没有从Dewar的书中回答这些问题。我应该在哪里看?

1 个答案:

答案 0 :(得分:1)

可能未加载#Line_A_key。所以你不能选择它......

d3.select(window).on("load", get_timeseries_data);