从脚本标记调用外部脚本中的函数时的ReferenceError

时间:2017-08-30 15:06:42

标签: javascript html d3.js

我觉得我做错了很少,但我无法找到它。我无法弄清楚如何从脚本标记中调用外部定义的函数,它会不断给我ReferenceError

我已将代码缩减到最小,所以这就是我所拥有的。这是我的HTML:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  <button id="mrbutton" type="button">Mr Button</button>
  <div id="barChart"></div>
  <script src="d3/d3.min.js"></script>
  <script src="d3/charts/bar.js"></script>
  <script>
    chartParams = {};
    document.getElementById('mrbutton').addEventListener('click', () => {createBarChart(chartParams)});
  </script>
</head>
</html>

d3/d3.min.js是D3版本3.以下是d3/charts/bar.js中的内容:

'use strict';

const createBarChart = params => {
  console.log('hello there!');
};

console.log('script loaded!');

但是当我加载页面时,Javascript控制台会吐出:

script loaded!
Uncaught ReferenceError: createBarChart is not defined

如果我将d3/charts/bar.js中的代码移动到HTML中的<script>标记中,它可以正常工作,但我想重用代码,所以我希望它是外部的。我究竟做错了什么?为什么我不能拨打createBarChart

更新:使用Babel编译为Ecmascript2015并不会改变任何内容,仍然是相同的ReferenceError。还将事件侦听器更改为箭头函数。

更新:我删除了D3代码并且只是调用了console.log(),但仍然没有运气。

1 个答案:

答案 0 :(得分:0)

我得到了它的工作。不确定这是否会帮助其他人(希望它可以),但我刚重新启动我的电脑。这就是全部;没有任何代码更改。我的原始代码现在工作正常(即使是原始的.addEventListener())。

这不是一个浏览器缓存问题,因为我在私人模式下尝试了几个浏览器,我仍然不知道问题是什么。如果有人知道它是什么,请做评论,我仍然感到困惑,尽管能够继续前进。

相关问题