es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Llamando a una función de js externa como evento onclick de ejs

Tengo una aplicación nodejs que renderiza un archivo ejs llamado main.ejs que incluye un botón. Me gustaría declarar una función en un archivo javascript externo para poder llamarla en el evento onclick de ese botón (en main.ejs). Pero cada vez que ejecuto la aplicación, al renderizar la página, ¡esa función se llamará automáticamente, pero cuando haga clic en el botón no se llamará! (Debo mencionar que ya intenté escribir esta función directamente en main.ejs en una etiqueta script, y funciona perfectamente. Pero sigo insistiendo en moverla a un archivo js correspondiente).

functions.js (archivo js externo)

function optionClick() {
    console.log("¡¡Yoohooo!!");
}

module.exports = {
    optionClickFunc: optionClick
};

server.js

var functions = require('./public/functions');

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

main.ejs

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que está ejecutando la función cuando se renderiza la página, en lugar de cuando se hace clic en el botón. Para solucionarlo, puede intentar cambiar el atributo onclick del botón en main.ejs para llamar a la función sin el <%= data.function() %>:

    <button id="submit-button" onclick="optionClick();"> INICIAR </button>
    

Comments are closed.