如何让 onclick 函数调用外部模块文件

Cro*_*csx 5 html javascript

我有这个代码

<div class="signup">
    <h2 class="form-title" id="signup"><span>or</span>Sign up</h2>
    <div class="form-holder">
        <input type="text" class="input" placeholder="Name" />
        <input type="email" class="input" placeholder="Email" />
        <input type="password" class="input" placeholder="Password" />
    </div>
    <button onclick="signup(this)" class="submit-btn">Sign up</button>
</div>
<script type="module" src="/libs/ajax.js"></script>
<script type="module" src="/scripts/login.js"></script>
Run Code Online (Sandbox Code Playgroud)

没有从这里的 onclick 中,我想调用我的 login.js 文件中的函数注册

    import { Ajax } from '../libs/ajax.js'
    let signup = (e) =>{
        console.log(e)
    }
Run Code Online (Sandbox Code Playgroud)

问题是,我使用 type="module" 因为我想在该 js 文件中导入脚本。但是,通过分配类型模块,无法从 html 文件中找到该函数。如果我删除 import 并删除 type="module" 它确实有效。

有没有办法从 onclick 绑定函数而不将我的函数分配给 window. 范围 ?

Que*_*tin 7

有没有办法从 onclick 绑定函数而不将我的函数分配给 window. 范围 ?

不。模块有自己的范围。除非您明确这样做,否则它们不会创建全局变量。

最好首先避免使用内部事件属性。从模块内部绑定您的事件处理程序。

let signup = event => {
    console.log(event.currentTarget);
};
document.querySelector('button').addEventListener("click", signup)
Run Code Online (Sandbox Code Playgroud)