JavaScript - Array de funciones

 
Vista:

Array de funciones

Publicado por Vanesa (1 intervención) el 17/09/2016 19:57:00
Hola, tengo un problema con un código de javascript. A ver si podéis ayudarme:
- En primer lugar tengo un botón que llama a una función:
1
<button onclick="miFuncion()">Clic</button>
- Esa función tiene el siguiente código:
1
2
3
4
5
function miFuncion() {
  var funciones = [f0,f1,f2];
  var Aleat = parseInt(Math.random()*funciones.length);
  funciones[Aleat](); //Aqui esta el error
}
Como puede leerse, defino un array (llamado funciones) que contiene unas funciones (f0, f1 y f2).
Después defino un número aleatorio para escoger f0, f1 ó f2, e intento llamar a dicha función en la cuarta línea. Ahí es donde no me funciona el código.
Tal y como yo lo veo, si por ejemplo, Aleat = 2; entonces funciones[Aleat] se cambiaría por f2 y la línea cuarta llamaría a f2();

¿Cómo lo veis?
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Array de funciones

Publicado por xve (2100 intervenciones) el 18/09/2016 10:03:01
Hola Vanesa, para ello, una manera es utilizando la función eval() para evaluar el contenido de una cadena... algo así:

1
eval(functiones[Aleat]+"()");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas
Val: 95
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Array de funciones

Publicado por Vainas (258 intervenciones) el 18/09/2016 16:09:38
Buenas: Yo lo veo bien y he hecho una prueba y me funciona.

No creo que debas usar eval como dice xve, en muchos foros suelen decir que es malo hacerlo con eval....

Yo creo que puede venir quizas de que tengas que declarar las funciones antes de la llamada o quizas el navegador....

Si tu navegador suelta algun error lo podrias dejar aqui.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar