为什么我在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,进行比较)。