无法从导入为类型模块的js文件中调用函数

时间:2018-10-30 17:20:52

标签: javascript html ecmascript-6 es6-modules

我正在使用模块导入功能在ES6中编写我的Javascript文件。现在,大多数现代浏览器都支持使用type ='module'来正确解析导入语句。     脚本类型=“模块 https://caniuse.com/#feat=es6-module

我构建了一个HTML select元素,然后使用其中的一个模块文件中的onchange()调用函数     选择onchange =“ someFunction()” 但是总是会发生错误,说在发生on change事件时未定义函数。 我内联测试了相同的功能,也没有使用type =“ module”,没有出现预期的问题。

这是一个错误吗?它与默认情况下推迟的模块脚本有关吗?我想念一些简单的东西吗?

我知道我可以通过使用Webpack或框架来避免此问题,但我真的很想尝试并仅使用原始的javascript脚本而没有任何其他功能。我相信也在js中创建此select元素然后附加到dom也会解决此问题。

2 个答案:

答案 0 :(得分:1)

模块不会创建全局变量。一切都在模块内。

如果要绑定事件处理程序,请使用addEventListener而不是使用onXxxxx属性从模块内部完成。

答案 1 :(得分:1)

在类型模块中使用脚本时可以使用此功能

            <button onclick="import('/modules/script.js').then(o=> o.showdialog())">

并在script.js中使用导出

export function showdialog() {}