Elementos dinámicos: dirigir la acción a una subrutina - Forum

Forum Navigation
You need to log in to create posts and topics.

Elementos dinámicos: dirigir la acción a una subrutina

Hola Gente!:

Estoy teniendo una duda, a ver si puede resolverse.

Cuando creo un elemento de forma dinámica con JS o escribo directamente código HTML en un objeto, puedo dirigir la acción a una subrutina?. Por ejemplo creo un enlace:

<a href='Subrutina'><div class='card'></div></a>

He intentado poniendo el nombre pero claro está que lo considera un enlace.  Lo solucioné de una manera poco fiable, me gustaría saber si hay otra forma interviniendo en el enlace.

Gracias!. Saludo!

Hola Palamar,

Primero debes utilizar este comando, por ejemplo en el evento de inicio de la aplicación:

NeoScriptToJS

Esto permite que las subrutinas estén visibles para JavaScript y ya puedes utilizar esta sintaxis:

<a href='javascript:neosubroutine.Subrutina(parametro)'>Texto del enlace</a>

Ejemplo:

<a href="javascript:neosubroutine.AlertBox('Hola','¿Como estas?','')">Texto</a>

 

Saludos.

 

 

Muchas Gracias por la respuesta Luis!, lo estaré probando!.

Hola @luishp, a la primera prueba no funciona. Estoy creando elementos dinámicamente, expongo acá un ejemplo a ver cual es el error. Por un lado no quiero realizar acciones sino que cuando el usuario haga clic en un elemento directamente se realicen las acciones de la subrutina

SetObjectHTML "Comercios" "[contentcomerciostmp]<a href='javascript:neosubroutine.acomercio('[myvarBuscar([loopcom])('id')]')'><div class='carddes'><img class='card-img-top' src='img/comcom1.png' alt='Card image cap'>\n    <div class='card-body'>\n      <h5 class='card-title'>[myvarBuscar([loopcom])('nam')]</h5>\n      <p class='card-text'>[myvarBuscar([loopcom])('loc')]</p>\n </div>\n </div>\n </a>"

El elemento lo crea excelente pero aunque creo la subrutina "acomercio" no funciona. Quizás entendí mal y solo se pueden ejecutar acciones y no subrutinas.

Por otro lado intenté el ejemplo de alertbox pero por alguna razón tampoco funciona.

El NeoScriptToJS lo pongo al inicio de la app y lo he probado inmediatamente antes de la acción concreta que forma el elemento.

Hay un error en uno de los paréntesis, así y todo no funciona.

He solucionado el problema, cuando envío un parámetro debo hacerlo sin ' '....digamos en vez de

'javascript:neosubroutine.acomercio('[myvarBuscar([loopcom])('id')]')'

Iría

'javascript:neosubroutine.acomercio([myvarBuscar([loopcom])('id')])'

Ahí si que funciona.

Lo posteo por si le sirve a alguien.

@palamar, el problema es con las comillas. Estabas cerrando unas cuando creías que abrías otras. Es decir, dentro de unas comillas dobles, debes poner unas simples o cerrarás las dobles y dentro de unas comillas simples no puedes volver a abrir otras comillas simples o cerrarás las anteriores provocando un error. Para evitar esto se suele utilizar una barra invertida antes de las comillas (caracter "escape"). Más información:

https://stackoverflow.com/questions/52525674/double-nested-quotes
https://en.wikipedia.org/wiki/Nested_quotation

Sasludos