为什么我在Observable中获得JavaScript未定义属性,而不是在HTML中?
是的,但我遇到了为什么我在Observable中获得JavaScript未定义属性,而不是在HTML中?,javascript,d3.js,Javascript,D3.js,是的,但我遇到了TypeError:无法读取绘制图表的代码行中未定义的的属性“timeFormat”,即: d3.选择(“#事件”).data([repositoriesData]).call(图表) 如图所示,错误指向.call(chart)参数 有人能帮我解释一下,当脚本在HTML中工作正常时,为什么会出现这个错误吗?我如何修复它? 正如comment和JSFIDLE(如下)所示,JavaScript函数在嵌入标准HTML页面时工作正常: <!DOCTYPE html> <
TypeError:无法读取绘制图表的代码行中未定义的
的属性“timeFormat”,即:
d3.选择(“#事件”).data([repositoriesData]).call(图表)代码>
如图所示,错误指向.call(chart)
参数
有人能帮我解释一下,当脚本在HTML中工作正常时,为什么会出现这个错误吗?我如何修复它?
正如comment和JSFIDLE(如下)所示,JavaScript函数在嵌入标准HTML页面时工作正常:
<!DOCTYPE html>
<html>
<!--https://jsfiddle.net/6rqxusw5/9/-->
<head>
<link href="https://unpkg.com/event-drops/dist/style.css" rel="stylesheet" />
</head>
<body>
<h1>Event Drops</h1>
<div id="events"></div>
</body>
<script src="https://unpkg.com/d3@4.13.0/build/d3.min.js"></script>
<script src="https://unpkg.com/event-drops/dist/index.js"></script>
<script>
const repositoriesData = [{
name: "intake",
data: [
{ date: new Date('03/02/2018 6:55:11 PM') },
{ date: new Date('03/02/2018 10:56:11 PM') },
{ date: new Date('03/03/2018 6:57:11 AM') },
]
}, {
name: "eligibility",
data: [
{ date: new Date('03/03/2018 6:58:09 PM') },
{ date: new Date('03/03/2018 11:58:09 PM') }, ]
}, {
name: "assessment",
data: [
{ date: new Date('03/04/2018 6:59:09 PM') }
]
}, {
name: "dispute resolution",
data: [
{ date: new Date('03/05/2018 7:01:09 AM') }
]
}, {
name: "compliance",
data: [
{ date: new Date('03/05/2018 7:05:09 PM') }
]
}, {
name: "closure",
data: [
{ date: new Date('03/05/2018 11:12:07 PM') }
]
}];
var chart = eventDrops({
range: {
start: new Date('03/01/2018 6:55:11 PM'),
end: new Date('03/06/2018 7:15:11 PM')
},
drop: {
date: d => d.date,
},
});
d3.select('#events').data([repositoriesData]).call(chart);
</script>
</html>
事件下降
常数重置数据=[{
名称:“摄入”,
数据:[
{日期:新日期('2018年2月3日下午6:55:11'),
{日期:新日期('03/02/2018 10:56:11 PM'),
{日期:新日期('2018年3月3日上午6:57:11'),
]
}, {
名称:“资格”,
数据:[
{日期:新日期('2018年3月3日下午6:58:09'),
{日期:新日期('03/03/2018 11:58:09 PM')},]
}, {
名称:“评估”,
数据:[
{日期:新日期('2018年4月3日下午6:59:09'))
]
}, {
名称:“争端解决”,
数据:[
{日期:新日期('2018年5月3日上午7:01:09'))
]
}, {
名称:“合规性”,
数据:[
{日期:新日期('2018年5月3日下午7:05:09'))
]
}, {
名称:“关闭”,
数据:[
{日期:新日期('03/05/2018 11:12:07 PM')}
]
}];
var图表=事件下降({
范围:{
开始日期:新日期('2018年1月3日下午6:55:11'),
结束:新日期('2018年6月3日下午7:15:11')
},
删除:{
日期:d=>d.date,
},
});
d3.选择(“#事件”).data([repositoriesData]).call(图表);
在Observable中的代码组织方面,我做错了什么,以及如何修复它
提前感谢您的帮助 这个答案是由中提供的,在那里我在得到以下提示后提出了这个问题:
EventDrops模块期望d3只是“挂起”窗口对象。这并不理想:模块应该真正声明它们的依赖关系,并用AMD加载它们,但无论如何,它不是一个破坏交易的工具。我添加了一个单元格,用于设置window.d3=d3
,并使事件删除变得愉快。这就是抱怨timeFormat
的问题-它希望d3.timeFormat
就在那里
[另外]我为输出创建了一个单元格,现在在d3.select(events)
中引用它,而不是d3.select(“#events”)
。有关原因的一种解释,请参见:单元格运行顺序取决于彼此,因此最好将d3之类的内容连接起来。根据引用变量选择到页面上的元素,而不是使用“#events”
之类的字符串来选择页面上的元素
你的问题是什么?这很好。问题是我做错了什么,脚本给了我错误TypeError:cannotread属性'timeFormat'of undefined
。你从哪里得到错误,在哪一行?纠正你的问题以显示你是什么asking@Alpesh-吉卡德拉,谢谢你的帮助。我试图将问题重新分阶段,使其更加明确。请看eventDrops
。它上面只有一个ƒ(t)
。这不是应该出现的(看看它上面的D3,进行比较)。