Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

767
Visualizações
Cómo llamar a una función declarada en un módulo javascript (tipo = módulo) desde una página html

Estoy luchando para usar módulos de javascript ...

Tengo un archivo html y un módulo JS. Tengo una función definida en el archivo javascript y me gustaría llamar a esa función desde mi página HTML. este es mi codigo

índice.html

 <html> <head> <script type="module" src="app.js"></script> </head> <body> <button onclick="greetFromHtml();">greetFromHtml</button> <button onclick="greetFromModule()"> greetFromModule</button> <script type="text/javascript"> function greetFromHtml(){ alert('Hello'); } </script> </body> </html>

aplicación.js

 function greet(){ alert('Hello'); }

El botón greetingFromHtml funciona bien. Cuando hago clic en el botón greetingFromModule aparece este error: hello is not defined at HTMLButtonElement.onclick

Si elimino type="module" del encabezado, todo funciona bien, sin embargo, necesito usar módulos por otras razones, por lo que esta no es una buena solución aquí.

He visto varias publicaciones que dicen que necesito importar/exportar o usar la ventana, pero no estoy seguro de qué hacer. ¿Alguien puede dar una respuesta por favor? Idealmente, la forma más sencilla de lograrlo.

Vea a continuación la referencia a alguna pregunta que he revisado:

la función en mi módulo javascript no está definida

Llamar a funciones en un JavaScript desde un HTML

Cómo usar el código del script con type=module [duplicado]

Módulos ES6: función onclick indefinida después de la importación

EDITAR He intentado lo siguiente pero sigo recibiendo el mismo error ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

EDITAR 2 El código en la respuesta está funcionando. Solo estaba tratando de ejecutarlo localmente, pero entendí que necesita un servidor, por lo que si ve el mismo error, cargue el sitio en el servidor o use un servidor local.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

En primer lugar, debe exportar explícitamente su función:

 export function greet() { alert("Hello from module"); }

En segundo lugar, un módulo tiene su propio alcance (este es el punto central de los módulos), por lo que debe agregar la función al alcance global. Entonces, para hacerlo, debe ejecutar un script que importe la función y la agregue al objeto de la ventana:

 <script type="module"> import { greet } from "./app.js"; window.greetFromModule = greet; </script>

Ahora no necesita esta parte <script type="module" src="app.js"></script>

Alternativamente, puede crear un obj vacío y agregarle sus módulos, así es como se vería:

 <html> <head></head> <body> <button onclick="greetFromHtml();">greetFromHtml</button> <button onclick="module.greet()">greetFromModule</button> <script type="text/javascript"> function greetFromHtml() { alert("Hello"); } const module = {}; </script> <script type="module"> import { greet } from "./app.js"; module.greet = greet; </script> </body> </html>
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda