我想多次调用我的d3代码,并将输出显示在我网站的不同位置。我将代码放在一个函数(chart
)中,我试图调用它两次并传递不同的参数。
我的d3代码中出现了一个奇怪的Uncaught TypeError: undefined is not a function
错误。
如果我只调用一次函数,但代码运行正常,但我会尽快:
chart(dj, "#c"); //dj is my data, #c is the div where I want the chart
chart(dj, "#e"); //dj is my data, #e is the div where I want the chart
它抛出此错误并且不会制作第二张图表。有什么想法吗?
答案 0 :(得分:2)
此代码块位于chart()
内:
data.forEach(function(d){
d.d_string = parseDate(d.d_string);
d.c_string = +d.c_string;
});
第一次运行时,它会做你期望的;它会将d.d_string
转换为Date
个对象。第二次,d.d_string
已经是一个日期,而d3的日期解析器只需要一个字符串,所以它出错了。
如果您将该块移到chart
之外(并将data
重命名为dj
),它会正常工作:
var parseDate = d3.time.format("%Y-%m-%d").parse;
dj.forEach(function(d){
d.d_string = parseDate(d.d_string);
d.c_string = +d.c_string;
});