我觉得我做错了什么,但找不到。我不知道如何从脚本标签中调用外部定义的函数,它不断给我ReferenceError
's。
我将代码减少到最少,所以这就是我所拥有的。这是我的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
。还将事件侦听器更改为箭头函数。
update:我删除了D3代码,只是调用Console.log(),但仍然没有运气。
我让它起作用。不确定这是否会帮助其他任何人(希望可以),但是我只是重新启动了我的计算机。就这样;没有任何代码更改。我的原始代码现在正常工作(甚至是原始的.addEventListener()
)。
这不是一个浏览器缓存问题,因为我尝试了几个私人模式的浏览器,而且我仍然真的不知道问题是什么。如果有人知道这是什么,请发表评论,尽管能够继续前进,我仍然感到困惑。