Ayuda con JS y eventListeners

drakkenspain

Buenas! El otro día hice una pequeña basura de la que no me siento muy orgulloso (era para clase y lo hice deprisa y sin pararme a pensarlo), así que me ha dado por mejorar el código un poco.

El primer código es este: -
El código que estoy haciendo ahora: https://jsfiddle.net/cc82etxc/1/

Es una pequeña página en la que introduces el nombre de una figura geométrica (cuadrado, círculo, rectángulo o triángulo) y te calcula su área a partir de los parámetros que introduzcas.

El problema que tengo es que no termino de entender como hacer que el botón me sirva para recoger el dato introducido cuando quiero.
Para el ejercicio de clase conseguí salir del paso haciendo esta burrada:

spoiler

Básicamente hice una función para cada dato que tenía que enviar, y en cada función cambiaba la función a la que llamaba el botón al clicarlo.

Ahora, para mejorarlo y dejarlo más claro, me gustaría hacer una única función que recoja el dato que sea, (base, altura, radio... lo que sea) en vez de tener 40 funciones diferentes.

El problema que tengo es que no se como funciona el listener, asi que no consigo sacar nada claro

spoiler

Hay alguna forma de hacer esto? Es decir, que recoja el dato devuelve la función cuando clico en el botón

 radius = button.addEventListener('click', function(){introduceShapeParameter()});

No se si he conseguido explicar muy bien lo que quiero hacer. Soy novato en esto y soy consciente de que ambos códigos son una mierda.

Gracias por la ayuda!

voignar

No te hace falta los eventListeners, con la función click también te vale

$( "#target" ).click(function() {
  alert( "Handler for .click() called." );
});

https://api.jquery.com/click/

1 1 respuesta
drakkenspain

#2 No he estudiado nada de JQuery todavía, voy a mirarlo a ver si consigo entenderlo. Gracias!

W0rd
object.onclick = function(){myScript};

https://www.w3schools.com/jsref/event_onclick.asp

2
flopi01

Te recomiendo usar on en vez de onclick, asi podras asignar la misma funcion a varios eventos.

$("target").on('click blur', script)

http://api.jquery.com/on/

1
B

Se podría usar la function para varios eventos sin necesidad de tirar de jQuery... me da mucha alergia a día de hoy meterlo en proyectos :/

Usuarios habituales