我觉得我做错了很少,但我无法找到它。我无法弄清楚如何从脚本标记中调用外部定义的函数,它会不断给我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(),但仍然没有运气。
答案 0 :(得分:0)
我得到了它的工作。不确定这是否会帮助其他人(希望它可以),但我刚重新启动我的电脑。这就是全部;没有任何代码更改。我的原始代码现在工作正常(即使是原始的.addEventListener()
)。
这不是一个浏览器缓存问题,因为我在私人模式下尝试了几个浏览器,我仍然不知道问题是什么。如果有人知道它是什么,请做评论,我仍然感到困惑,尽管能够继续前进。