Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

404
Vistas
Llamar a una función js externa como evento ejs onclick

Tengo una aplicación nodejs que genera un archivo ejs llamado main.ejs que incluye un botón. Me gustaría declarar una función en un archivo javascript externo que pueda llamar en el evento onclick de ese botón (en main.ejs). Pero cada vez que ejecuto la aplicación, al mostrar la página, esa función se llamará automáticamente, pero cuando hago clic en el botón, ¡no se llamará!

(Debo mencionar que ya intenté escribir esta función directamente en main.ejs en una etiqueta de secuencia de comandos, y funciona perfectamente. Pero sigo moviéndola a un archivo js respectivo)

functions.js (el archivo js externo)

 function optionClick() { console.log("Yoohooo!!"); } module.exports = { optionClickFunc: optionClick };

servidor.js

 var functions = require('./public/functions'); app.get('/question', (req, res) => { res.render('main.ejs', { data: { function: functions.optionClickFunc } }); });

principal.ejs

 <button id="submit-button" onclick="'<%= data.function() %>';"> START </button>

Y cada vez que tengo esta URL en mi navegador: http://localhost:3000/question, veo el mensaje de registro ("¡¡Yoohooo!!") impreso en la consola sin hacer clic en el botón. ¡Si bien no imprime el mensaje cuando hago clic en el botón!

¿Alguna idea? Realmente aprecio tu tiempo.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

data.function es una función y cuando la llama en el código del lado del servidor, la llama en el código del lado del servidor.

Cuando escribe HTML, necesita escribir cadenas y la cadena que representa el valor del atributo onclick debe ser código fuente de JavaScript . ( data.function , como se mencionó, es una función, no una cadena de código fuente). El cliente compilará ese código fuente y lo ejecutará.


Su código del lado del servidor y del lado del cliente puede estar escrito en JavaScript, pero son dos programas diferentes que se ejecutan en dos entornos diferentes (Node.js y el navegador) que generalmente (menos durante el desarrollo) se ejecutarán en dos computadoras diferentes.

Relacionado: ¿Cuál es la diferencia entre la programación del lado del cliente y del lado del servidor?

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda