当用户单击段落时,我试图从script.js
运行功能,但是它给了我ReferenceError: stockClicked is not defined
。
我的HTML是:
<p id="stock" onclick="stockClicked()"></p>
<script type="module" src="script.js"></script>
stockClicked()
函数在script.js
中定义:function stockClicked() {
console.log("here");
}
最佳答案
当您使用type="module"
引用脚本时,该脚本将作为ES6 module而不是在全局范围内加载。如果希望stockClicked()
在全球范围内可用,只需将type="module"
从脚本标记中删除。
如果您确实需要使用type="module"
,则有两种选择:
创建一个新的内联模块脚本标签,该标签从script.js
导入,并通过说stockClicked()
明确地将window.stockClicked = stockClicked
函数分配给全局范围。
以编程方式而非HTML形式添加点击侦听器。换句话说,在p
标记之后,添加一个内联脚本,该脚本通过id获取元素并添加一个Click侦听器。像这样:
import {stockClicked} from './script.js';
document.getElementById("stock").addEventListener("click", stockClicked);
在这两种情况下,都需要从
stockClicked()
导出script.js
函数。另外,建议使用.mjs
而不是.js
命名模块文件。