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
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 enmain.ejs
para llamar a la función sin el<%= data.function() %>
: