Como pasar el código de una función a un proceso JS (Comprobador de funciones JS )

Buenas a todos, tengo un “atasco” (he perdido tres días de vida) y el foro es mi último recurso. Vaya por delante que en JS estoy TOTALMENTE PEZ…… a ver si soy capaz de explicarme, voy a resumir lo que necesito, luego explico por qué….

Formulario: un campo de entrada (cadena de texto), un campo objeto texto con una función JS (dinámica, el usuario la escribe) y un campo con el resultado de aplicar esa función al campo de entrada.

Básicamente podría describirse como un testeador de funciones JS, aunque no es eso.

Tengo el formulario (con algunos campos mas), he creado un botón que ejecuta un manejado de evento que induce el dato de entrada a un proceso JS que se ejecuta en tercer plano, y después recoge el resultado de la ejecución de ese proceso JS en una variable que muestra en el formulario.

Todo eso he conseguido que funcione PERO si el procesos JS, es fijo, es decir si creo el proceso con la función, pero SOY INCAPAZ de pasar al proceso JS el contenido del campo objeto Script Y QUE FUNCIONE….

Pasa pantallazo para que veáis en que consiste
Formulario:


Manejador de evento que llama al proceso js

Resultado que pretendo y que sí funciona
image

Metodo empleado y que NO VALE de nada
image

Todo esto es parte de una modificación que estoy haciendo al importador dinámico (de los cursos de formación continua), ya he conseguido importar directamente de Excel, que procese carpetas completas y ando con alguna mejora para las generación de plantillas, para hacerlo mas intuitivo y ágil, porque mi aplicación necesita continuamente importar muchos fichero y de distinta índole desde excel.
Muchas gracias

Buenas

Si lo he entendido bien ¿Lo que quieres hacer es que cuando el usuario ejecute el script, el retorno de ese script para al campo “resultado con script”? o ¿Es otro el problema?

Buenas fran,
Sí, en teoría solo es eso, pero como ya digo estoy frito en js.
Ese código de ejemplo funciona y consigo el cometido, pero si tengo un fichero js en el proyecto con ese código y ejecuto el proceso
Lo que no sé es como hacer para cambiar el contenido de ese campo script y que se ejecute…(hacerlo dinámico en tiempo de ejecución)
La idea final es que se ejecuten todos por un proceso sobre una lista (pero eso será otro cantar mas adelante)
No se si me explico bien.

Gracias por tu interés

Hola F. Tejada.

Imagino que lo que necesitas es ejecutar código JavaScript de manera dinámica.

Lo que estás buscando es la función eval de JavaScript.

Siempre se ha desaconsejado el uso de esta función y si además tienes nula experiencia en este código, ejecución en 3º plano y sin posibilidad de depurar el código con Velneo, te auguro muchos quebraderos de cabeza.

Ánimo y al toro …

Saludos
Paco Satué

Pues creo que lo tengo, lo he estado probando y efectivamente, tendrías que usar la función eval() de JS,
la cosa es que su uso se recomienda entre 0 y nulo, pero haber si lo que he hecho te sirve (A mi me ha funcionado)

1º- He creado un formulario con una variables locales, para recoger los valores

2º - Luego he creado un botón llamado “Enviar al JS”, que ejecuta un Manejador de Evento en el que hago esto:

3º - En el archivo Javascript (Es un proceso), hago lo siguiente

imagen

4º - En la caja de texto ejecuto lo siguiente y funciona perfectamente siempre que devulevas algo:

Basicamente, a falta de usar eval(), podemos usar su alternativa más segura “Function” de Js, que lo que hace es evaluar un String a una función anónima para poder ejecutar el código, lamentablemente, no es posible pasarle una función directamente a la caja de texto, por algún tipo de caracter que mete Velneo que no encuentro (como por ejemplo las comillas simples, que puedes ver como las remplazo en el script).

Si te sirve, así, puedes hacer un apaño, lo he hecho así de cabeza y de todo lo que había probado es la que más me ha resultado.

Muchas gracias, Paco y Fran, agradecido de verdad.
He descartado el eval()… si tú lo ves complicado Paco, no quiero pensar el infierno que sería para mi.

He estado probando lo que me has puesto Fran y he conseguido que funcione como dices… lo que ocurre que he tenido que hacer una pequeño “apaño”…me explico:

El código que tengo en ese campo debe ser una función porque en realidad su función :sweat_smile: es ser evaluado en el proceso de importación para formatear el dato de entrada (este es su uso real)… si uso el codigo tal cual me lo ponías no funcionaba en el proceso de importación así que lo he homogeneizado y compatibilizado al maximo…y he dejado el codigo con la función (el original para la evaluación en el momento de importación) y lo que hago es al pulsar el botón de evaluar el codigo “anular” la mediante replacestring // alguna linea de codigo … y funciona… no se si me explico, os envío capturas:
De esta forma se ejecuta la función correctamente en el proceso de importación:
image

Así funcionaría la evalución del codigo al pulsar el botón:
image

Bueno en definitiva…MUCHAS GRACIAS, porque he conseguido lo que pretendía, GRACIAS A VOSOTROS.
:raised_hands: :raised_hands: :raised_hands:

PD. Esta es la función de formateo de datos mas simple, hay otras mucho mas complicadas, pero ya tengo la base de lo que SI FUNCIONA