我正在谷歌浏览器中尝试 ES6 模块。当我单击按钮时,我想启动一个alert()(在导入的函数中)。
js/notification.js 加载良好,但是当我单击按钮时出现错误:
未捕获的引用错误:createNotification 未定义
at HTMLButtonElement.onclick ((index):24)
索引.html
<head>
<script type="module" src="js/main.js"></script>
</head>
<body>
<section id="container">
<button type="error" onclick="createNotification()">Create</button>
</section>
</body>
js/main.js
import {createNotification} from './notification.js';
js/notification.js
export function createNotification(type){
alert();
}
使用的函数onxyz
-attribute-style 处理程序必须是全局的(这是不使用它们的众多原因之一)。您的函数不是全局函数,它是您导入它的模块的本地函数。 (记住:你的主脚本也是一个模块;如果不是,你就不能使用import
in it.)
你可以通过分配给一个全局的window
财产:
window.createNotification = createNotification;
但这会是much更好地使用现代事件处理:
document.querySelector("#container button").addEventListener("click", createNotification);
plnkr 上的实例,显然只适用于具有模块支持的尖端浏览器。
旁注:如安德烈亚斯指出, type="error"
无效于button
元素。有效类型是button
, submit
, or reset
, with submit
是默认值。 (我已将其更改为button
在 plnkr 中。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)