【问题标题】:Can a <script> have two "types" at the same time?<script> 可以同时有两个“类型”吗?
【发布时间】:2022-10-20 11:30:26
【问题描述】:

我有以下问题,我希望在单击按钮时执行一个函数,为此我有以下代码:

<button type="button" onclick="printResult()">Calcular</button>

我像这样引用脚本:

<script type="module" src="app.js"></script>

现在,碰巧当我点击按钮时,我收到错误“printResult is not defined”。我可以通过将脚本的类型更改为“文本/javascript”来解决这个问题。但是,该文件是模块化的,我需要它是那种类型,并且它使用其他文件中的函数。然后:

  1. 有没有办法让一个人同时拥有两种类型?
  2. 如果没有,您还能如何解决这个问题?这不可以?不能同时调用另一个文件中使用其他文件中的函数的函数?

    我会很感激你的回答:)

【问题讨论】:

    标签: html types modular script-tag


    【解决方案1】:

    有没有办法让一个人同时拥有两种类型?

    不

    如果没有,你还能如何解决这个问题?这不可以?不能同时调用另一个文件中使用其他文件中的函数的函数?

    肮脏的技巧是显式创建全局变量

    <button onclick="foo()">Click me</button>
    
    <script type="module">
    
    function foo() {
        console.log("foo");
    }
    
    window.foo = foo;
    
    </script>

    现代方法是使用推荐的方法(自 1990 年代后期以来)并使用 addEventListener 而不是 onclick 属性。

    <button>Click me</button>
    
    <script type="module">
    
    function foo() {
        console.log("foo");
    }
    
    const btn = document.querySelector('button');
    btn.addEventListener('click', foo);
    
    </script>

    【讨论】:

    • 嘿昆汀在这里,我们可以请删除肮脏的黑客。在 2021 年,我不会对任何使用这种方法的人感到满意。也不会推荐它作为解决方案。
    猜你喜欢
    • 2013-03-07
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多