![]() |
|
Tasker Para hablar de todo lo relacionado con la aplicación tasker |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
Creación, uso y manipulación de variables con javascript
Buenas, mientras preparo un tutorial sobre el uso de javascript con tasker se me ha ocurrido separar y adelantar la parte de las variables ya que, aunque no es lo más potente que se puede hacer, si que me parece de lo más util ya que puede servir tanto a gente que le interese aprender algo de programación como a los que no.
Todo aquel que ya entienda el concepto de variables (para los que no este tutorial no es para vosotros aún, pasaros por aquí y luego volveis ![]() Para los que os haya interesado, comenzamos! 1. Introducción a la acción Para ejecutar código javascript hay que utilizar la acción "Script->JavaScriptlet". Está acción permite escribir en un campo de texto el código a ejecutar. La sección "Librerias" es ya algo avanzado y no lo vamos a usar, dejarlo siempre en blanco. Conviene dejar marcado el check de "Salida automática" que lo unico que hace es que cuando acabe de ejecutarse el código pase a la siguiente acción, y la "cuenta atrás" se puede dejar en el valor por defecto (45) 2. Declaración y uso de variables Lo interesante de esta acción en Tasker es que las variables se "traspasan" de forma más o menos transparente entre tasker y javascript, de forma que las variables que se crean o modifican desde el código serán accesibles desde otras acciones de tasker y viceversa. Habría que distinguir de todas formas entre las variables locales (todo el nombre en minúscula) y globales (al menos una letra mayúscula). Variables locales Estas si que se traspasan de forma totalmente transparente al usuario simplemente quitando o añadiendo el '%' al principio. Es decir, que si tenemos definida en tasker una variable %valor estará directamente disponible desde javascript con el nombre valor y si definimos en javascript una variable mivariable estará disponible en las siguientes acciones de tasker con el nombre %mivariable. Veamos un ejemplo, creemos una acción javascriptlet con este código: Código:
var nombre = "Pepe"; var edad = 25; edad = edad + 5; Si ejecutamos la tarea, como habréis imaginado se mostrará el texto "Hola, me llamo Pepe y tengo 30 años". Y así hemos definido 2 variables y modificado el valor de una de un plumazo en una sola acción (y podríamos haber definido todas las variables y hecho todas las operaciones que quisieramos). Cosas a tener en cuenta: - las variables se definen cuando no existen aún con la expresión var nombrevariable = valor - se accede a las variables ya existentes directamente por el nombre sin el var - las expresiones acaban con ";" - los valores de texto deben ir entre comillas, los números no. Variables globales Crear y acceder a las variables globales no es tan directo como con las locales, pero no es demasiado complicado tampoco (a las variables incorporadas se accede como las globales pero no se puede alterar su valor manualmente) Esto se hace mediante las funciones global() y setGlobal(), en el tutorial de javascript explicaré lo que son las funciones, por ahora solo explicaré como usar algunas de ellas. Veamos el mismo ejemplo que antes usando variables globales en vez de locales para el nombre y la edad: Código:
setGlobal("NOMBRE", "Pepe"); setGlobal("EDAD", 25); setGlobal("EDAD", global("EDAD")*1 + 5); Primero que nada vemos que en el caso de las variables globales no hay que hacer distinciones cuando las definimos por primera vez o si ya existen como con el operador var con las locales, se hace todo mediante la funcion setGlobal(). Se llama a la función poniendo primero el nombre de la variable global como texto (por tanto entre comillas como hemos visto antes) y sin el "%", y luego, ponemos una coma y pasamos el valor que queremos dar a la variable. La función global() se llama pasándole el nombre de la variable como texto (entre comillas) sin el "%" y devuelve el valor actual de dicha variable. Visto esto se puede analizar la ultima expresión: Código:
setGlobal("EDAD", global("EDAD")*1 + 5) Nota: el "*1" que hay después de global("EDAD") es porque esta función devuelve el valor de la variable como texto, y como veremos despues, si en una suma uno de los elementos está considerado como texto concatena ambos textos. El "*1" lo que hace el multiplicar un texto por 1, convirtiéndolo a un número, de forma que la suma se ejecuta correctamente. Si ejecutásemos el ejemplo sin el "*1" la edad sería 255. Hay que hacer esto siempre que queramos hacer sumas con una variable global numérica. 3. Manipulación de variables numéricas (expresiones matemáticas) Ya hemos visto como hacer sumas: simplemente hay que usar el operador "+" entre dos o más números o variables numéricas. De la misma forma se pueden usar los operadores aritméticos habituales: resta -> "-", división -> "/", multiplicación -> "*" y módulo -> "%". Se pueden hacer operaciones compuestas usando los paréntesis de forma habitual. Para los que sepáis ya como usar matemáticas en tasker vereis que es más o menos lo mismo solo que para usar las variables se hace como he explicado anteriormente, pero echaréis en falta el operador "^" para calcular potencias que no existe en javascript y la serie de constantes y funciones para trigonometría, redondeos, etc... Para esto javascript incorpora la clase Math. No voy a explicar aquí que es una clase, pero su uso es muy sencillo, veámoslo con un ejemplo: Código:
var redondeo = Math.round(8 / 5); Del mismo modo se puede usar por ejemplo la constante Math.PI para el valor del número Pi y más cosas. Aquí hay una referencia completa de las constantes y funciones disponibles en el objeto Math. Es en inglés, pero con tiempo lo traduciré y lo incluiré aquí, no es demasiado dificil de entender y se parece a como se hace en Tasker directamente. La principal ventaja de hacer calculos desde javascript en lugar de desde acciones tasker es que si se están definiendo varias variables desde una acción javascript y una o varias de ellas se obtiene mediante cálculos o incluso a partir de otras variables se puede hacer todo en una misma acción, además se pueden realizar cálculos encadenados en una unica acción dejando la tarea más limpia. Pongamos el ejemplo que aparece al final de este post, hay mejores formas de hacer esto, pero sirve muy bien como ejemplo. Desde Tasker requeriría múltiples acciones pero se podría resumir en un único javascriptlet: Código:
var segundos = global("TIMES"); var dias = Math.floor(segundos / 86400); segundos = segundos - (dias * 86400); var horas = Math.floor(segundos / 3600); segundos = segundos - (horas * 3600); var minutos = Math.floor(segundos / 60); segundos = segundos - (minutos * 60); 4. Manipulación de variables de texto Aquí viene donde esto se pone más interesante ya que en la manipulación de textos es donde se suelen acumular más acciones troceando, procesando y concatenando para obtener el texto deseado. Una introducción a como manipular variables en Tasker se puede ver aquí aunque en este aspecto javascript provee de más métodos y permite hacer más cosas y más complejas. Concatenar textos Para concatenar (unir) varios trozos de texto / variables en uno basta con usar el operador "+" como si sumasemos los textos. Por ejemplo: Código:
var nombre = "Pepe"; var saludo = "Hola " + nombre; Nota: en caso de una suma en la que intervengan textos y números estos se tratarán como textos y se concatenaran en vez de sumarse Código:
var texto = "prueba " + 5 + 4; Código:
var texto = "prueba " + (5 + 4); Dividir textos Igual que con la acción "Dividir variable" de Tasker, puedes "trocear" un texto dividiendo por un carácter o grupo de carácteres con la función "split". Ejemplo: Código:
var aficiones = "fútbol,hockey,natación"; aficiones = aficiones.split(","); nota: en tasker se puede acceder a partir de este momento a los elementos como un array de tasker normal (%aficiones1, %aficiones2... o %aficiones(1), %aficiones(2)...) pero en javascript los arrays son "puros" (tasker usa "pseudo-arrays"), los indices empiezan a contar desde 0, y se accedería a estos elementos desde javascript así: aficiones[0], aficiones[1] y aficiones[2]. No es necesario almacenar previamente el texto en una variable y luego sobreescribir su valor, las funciones que se pueden aplicar sobre las variables de texto se pueden aplicar al texto en si, asi: Código:
var aficiones = "fútbol,hockey,natación".split(","); Las propias variables de texto se consideran en javascript como arrays de carácteres donde el primer carácter está en la posición 0, el siguiente en posición 1 y así. Se pueden hacer por tanto estas cosas:
Hay varias formas de quedarse con una porción de un texto, la más parecida a la estandar de Tasker "Sección de variable" es la función substr que se usa así: Código:
"Hola mundo".substr(2, 4); Por otro lado está la función substring, se le pasa tambien como primer parámetro la "posición inicial", y el segundo parámetro, que es opcional, es la "posición final" en lugar de un número de carácteres a coger. En caso de no poner nada devuelve desde la posición inicial hasta el final de la cadena. Ejemplo: Código:
var texto = "Hola mundo"; var cacho1 = texto.substring(3, 6); var cacho2 = texto.substring(5); Reemplazar en textos Para reemplazar textos en cadenas tenemos la funcion replace. Se le pasan 2 parámetros, el texto a reemplazar y el texto por el que remplazarlo. Ejemplo: Código:
var love = "Me encanta iOS".replace("iOS", "Android"); Bueno, pues eso es todo. He tratado de explicarme lo más claramente posible, pero es facil que algunas cosas no queden muy claras, espero vuestros comentarios para ir completándolo y mejorándolo! Última edición por maid450 Día 25/06/13 a las 12:16:48 |
Los siguientes 10 usuarios han agradecido a maid450 su comentario: | ||
|
#2
|
Me guardo la entrada en Pocket para leerla más tarde, pero respecto a Javascript, hay una página muy buena CodeAcademy en la que se pueden aprender variedad de lenguajes con una lecciones muy sencillas y paso a paso.
un saludo |
Los siguientes 2 usuarios han agradecido a fus su comentario: | ||
#3
|
|
Cita:
![]() Realmente este tutorial y otro que estoy preparando están pensados más en "como hacer cosas en Tasker usando javascript" que en "aprende javascript" pero claro, tengo que explicar un poco del lenguaje para que se entienda algo ![]() |
Los siguientes 3 usuarios han agradecido a maid450 su comentario: | ||
#4
|
|
Cita:
|
#5
|
Entiendo entonces maid q una de las ventajas es que utilizar javascript es más rápido que tasker no?
Muchas gracias maid por la currada. Todavía tengo pendiente ponerme con el javascript no se me olvida. Ya tengo varios libros. Con esto todavía me entran más ganas. |
Gracias de parte de: | ||
#6
|
|
Cita:
Para que te hagas una idea, hice un pequeño test estableciendo 8 variables (%aaa, %bbb, %ccc...) al valor 1, y tardó 50 milisegundos en ejecutar las 8 acciones. 50 milisegundos es nada, 0.05 segundos, inapreciable. Pero ejecutar la acción equivalente en un javascriptlet estableciendo las variables (aaa, bbb, ccc...) también a 1 tardó 1 milisegundo en hacerlo todo. A efectos prácticos se puede decir que ambas formas son igual de instantáneas, pero en realidad el javascriptlet ha tardado 50 veces menos. Como digo para este ejemplo la diferencia práctica es pequeña, pero imágina lo mismo en tareas complicadas que en vez de establecer a 1 variables empieces a hacer calculos complejos, dividir y concatenar bastantes variables... puede empezar a ser una diferencia significativa. Y en lo que no es tan facil de calcular pero pienso que habrá bastante diferencia es en ciclos de procesador, es decir en la cantidad de operaciones que debe realizar el procesador para hacer cosas, cada acción de tasker hace que el procesador tenga que hacer bastantes cosas, mientras que con un javascriptlet puedes hacer muchas cosas en una unica acción de tasker, y si tienes varios procesos en el telefono haciendo tareas y tienes el procesador muy cargado en un momento dado, ejecutar una tarea con muchas acciones pienso que se notará más el ralentizamiento que con una sola acción javascript. Pero bueno, como digo, en situaciones normales la "velocidad" no cambia tanto, por eso en mi post digo más bien que lo hace de forma "más eficiente", y las grandes ventajas, al menos para mi, siguen siendo que puedes mantener más limpias las tareas comprimiendo muchas acciones de trabajo de variables en una sola y que javascript da mucha más potencia y flexibilidad a la hora de hacer calculos, trabajar con cadenas de texto y sobretodo con arrays. Última edición por maid450 Día 24/06/13 a las 08:29:12 |
Gracias de parte de: | ||
#7
|
Gracias maid. Efectivamente lo de la velocidad puede ser un aspecto menor, excepto... cuando estas creando una aplicación y a lo mejor tienes q hacer 40 operaciones solo con variables más luego otras.
Lo de la claridad estoy totalmente de acuerdo. Dímelo a mi que a veces tengo una tarea con 30 y pico acciones! |
#8
|
||||
|
||||
Cita:
Temía una mayor complejidad y por eso había pospuesto esta lectura hasta encontrar el mejor momento, sin prisas y sin distracciones. Pero la lección ha sido bastante llevadera, muy comprensible, te explicas realmente bien. Y es muy interesante porque abre muchas posibilidades, sobre todo para abreviar esas tareas en las que manejamos pesadamente las variables de Tasker. Cuando comience a practicar supongo que surgirán más dudas, de momento solo tengo dudas relativas al punto más flojo de Tasker, me refiero a la chapuza de los pseudoarrays: Cita:
2 ¿Se pueden usar variables como índices, en los arrays de Javascript? Por ejemplo aficiones[index] 3 Sin usar la función split, ¿Cómo se define o crea un array de Javascript? 4 y última: ¿Javascript tiene arrays de dos o más dimensiones? aficiones[2,6] o algo parecido. Gracias nuevamente. Espero con interés la siguiente lección sobre Javascript aplicado a Tasker. |
#9
|
|
Cita:
![]() La parte sobre los arrays en detalle tengo pendiente añadirla cuando tenga algo de tiempo, y estoy pensando incluso en ir añadiendo cosas al post original y que se convierta en el tutorial "completo" del uso de javascript en Tasker, no sé muy bien si hacerlo así o en otro aparte... Enfin, por lo pronto voy a ir resolviendo tus dudas: 1 - En efecto, en el caso de arrays locales se pueden crear/usar indistintamente desde cualquier "ambiente". Tasker traslada las variables y arrays existentes en el entorno tasker a javascript cuando ejecuta el codigo, y al acabar transfiere de nuevo las variables como estén después de la ejecución al entorno de Tasker nuevamente. El caso de arrays globales es un poco más rollo, ya que habría que hacer algo así: Código:
setGlobal("MIARRAY1", 1); setGlobal("MIARRAY2", 2); setGlobal("MIARRAY3", 3); 2 - Si que se pueden usar variables como indice, pero las variables tienen que ser numéricas si se quiere que se transfieran bien a Tasker (javascript admite arrays con indices textuales, pero en ese caso no se transferirían a Tasker). 3 - se pueden definir usando esta notación: Código:
var fruta = ["pera", "manzana", "platano"]; Código:
var arraybidimensional = [[1, 2, 3], ["pera", "manzana", "platano"]]; var platano = arraybidimensional[1][2]; No sé que tal gestionará tasker estos arrays multidimensionales al pasarlos a pseudo-arrays, en teoría debería funcionar. |
Gracias de parte de: | ||
#10
|
||||
|
||||
Subido al recopilatorio este genial tutorial. Gracias como siempre Maid450.
![]() |
Gracias de parte de: | ||
#11
|
Maid para poder construir una simple base de datos bidimensional y que se guarden los datos es posible hacerlo con javascript o mejor me pongo con sqlite?
Por cierto lei un comentario de Pent que para manejar los arrays lo que hacia era: Tasker: %Var (que es igual a 1,2,3,4,5) a %var Ya en Js: split (como separar en Tasker) %var (ya tenemos el array en Js) Después de hacer lo que queramos en Js.... Join %var (como concatenar en Tasker) asi reconstruimos el array En Tasker Otra vez: %var a %Var y asi se queda guardado. Es que aparte de que veo que no voy a poder utilizar los arrays multidimensionales de Js en Tasker es que otro problema es el de guardar la información de JS. No se si se podrá guardar en un documento o con algo que he leido por ahi de html5 y una nueva funcion?? que trae,localStorage. Es que lo de que no sean accesibles las variables globales y los arrays lo veo una limitación enorme a la hora de usar Js. |
#12
|
||
Cita:
Cita:
A la hora de almacenar las variables creadas en js hay varias opciones: Con la funcion setGlobal puedes trasladar el array js a un array global en tasker convirtiendo sus valores uno a uno así: Código:
for(var i=0; i<miarrayjs.length; i++) { for(var j=0; j<miarrayjs[i].length; j++) { setGlobal('ARR_TASKER'+(i+1)+(j+1), miarrayjs[i][j]); } } Si solo quieres almacenar el array para leerlo luego de nuevo desde js puedes usar la función JSON.stringify(miarray) que lo que hace es convertir el array/objeto/lo que sea en su representación como texto, con lo que tasker lo gardará como un texto, que luego usando JSON.parse(texto) lo puedes reconvertir en los datos originales. Puedes escribir los datos en un fichero, yo para un array bidimensional usaría una estructura de archivo guardando cada subarray en una linea, y sus elementos separados por algún caracter como "|", podrías hacerlo así: Código:
for(var i=0; i<miarrayjs.length; i++) { writeFile('/ruta/al/archivo.txt', miarrayjs[i].join('|')."\n", true); } Puedes probar tambien mediante comandos "sqlite3" crearte tu propia base de datos donde insertar y recuperar los elemento Última edición por maid450 Día 30/01/14 a las 08:42:17 |
Los siguientes 2 usuarios han agradecido a maid450 su comentario: | ||
#13
|
Gracias por la respuesta Maid , bueno con lo que has explicado me quedo mas tranquilo, en el sentido de q JS parece mas eficaz o util de lo q pensaba ayer.
Despues de tanto leer cosas por alli y por aca, al final lo que me queda es la sensacion de que si nos quejamos de la fragmentacion de android eso no es nada comparado con la que hay en los lenguajes de programacion! Menudo jaleo! Tropecientos lenguajes pero es que luego encima cada uno con su version y para colmo que si parches! Total q me siento como un español con su ingles "medio" metido en una fiesta de interpretes de la ONU. Al final me he tirado por sql3, es verdad que es mas complicado quzas pero resulta q con tanta base de datos de whatsapp al final no me parece tan inasequible. |
#14
|
||||
|
||||
Gracias, excelente tutorial para iniciarse en la parte de javascript.
Yo me he puesto a ello, pero tengo un problema. tengo las siguientes variables en tasker %Ahorro %Gasoil siendo variables globales y la variable local %get2 Creo una tarea javascriptlet con el siguiente script ahorro = global("Ahorro"); gasoil = global("Gasoil); ahorro = ahorro + ((gasoil - get2)*50; Esto me devuelve un error que falla en la tercera instrucción, si modifico el script por: ahorro = global("Ahorro"); gasoil = global("Gasoil); ahorro = get2; Este script también me devuelve un error, sin embargo el siguiente script no me devuelve error ahorro = global("Ahorro"); gasoil = global("Gasoil); Resumiendo, el error lo tengo al recuperar el valor de una variable local ¿alguien me puede ayudar? Venga, estoy haciendo una tarea, que me diga, que día tengo que poner gasolina y me acumule cuando ahorro me está generando, va a ser legen... wait it for... dary! Gracias y saludos. |
#15
|
|
Cita:
En principio el código pinta bien, de me ocurre que pueda ser un bug en tasker por usar una variable con un número, debería funcionar porque parece correcto, pero tal vez sea por eso, prueba usar otro nombre para la variable que no tenga un número y cuentas qué tal ![]() |
#16
|
Justo acabo de releer el código y he encontrado una errata en cada una de tus pruebas...
En la primera abres 2 paréntesis y sólo cierras 1, y en la segunda abres las comillas en gasoil pero no las cierras, tal vez sea eso o simplemente te has colado al copiarlo aquí y es lo que he dicho en el post anterior... |
#17
|
||||
|
||||
lo he resuelto creando una variable en tasker, get2 es una de estas variables que te hace un "separar variable" así que creando una variable precio con el valor de get2, ya he podido trabajar en el script con la variable precio sin problemas.
Gracias y saludos. |
Gracias de parte de: | ||
#18
|
|
Cita:
El separar variable te devuelve un array, que me parece que no lo trato en el tuto porque ya es más complejo. El caso es que tasker trata los arrays como variables separadas, de forma que el primer elemento del array get lo llama %get1, el segundo %get2, etc... En JavaScript sin embargo solo existiría la variable get y puedes acceder a sus elementos como get[0], get[1]... (a diferencia de tasker empieza a contar desde 0, no desde 1). Conclusión, en tu caso, a %get2 se accedería desde javascript como get[1] |
#19
|
Novato en Javascript con problemas...
Hola a todos.
Estoy haciendo una aplicación de uso propio que maneja una base de datos de plantas hecha a partir de una hoja de càlculo. Hay unas 150 filas y 10 columnas y contiene datos numéricos, de texto, direcciones donde se guardan las imágenes de cada planta y el link a una pàgina web donse se dan detalles de cada planta en cuestión. Ejecutando la tarea en Tasker se tardan unos 12 segundos en mostrar la pantalla donde se muestra el listado de las plantas (bufff...). Convirtiéndola en aplicación con el AppFactory la carga de la base de datos dura menos, unos 5 seg., pero me gustaria que fuera más rápido el proceso de separar la variable inicial y el bucle para extraer los datos de cada fila. Esta es la tarea Código:
Plantes (274) A1: Destruir Escena [ Nombre:Detall Planta Continuar Tarea Tras Error:Encendido ] A2: Destruir Escena [ Nombre:Llistat Cientific Continuar Tarea Tras Error:Encendido ] A3: Destruir Escena [ Nombre:Llistat Vulgar Continuar Tarea Tras Error:Encendido ] A4: Mostrar Escena [ Nombre:Espera Plantes Mostrar como:Actividad, Ventana Completa, Sin Título Posición Horizontal:100 Posición Vertical:100 Animación:Sistema Mostrar Botón Salida:Apagado Continuar tarea inmediatamente:Encendido ] A5: Leer Archivo [ Archivo:Plantes.txt A la variable:%dades ] A6: Buscar y Reemplazar Contenido de Variable [ Variable:%dades Buscar:\n Ignorar Caso:Apagado Multilínea:Apagado Una sola coincidencia:Apagado Almacenar Coincidencias En: Reemplazar Coincidencias:Encendido Reemplazar Con:| ] A7: Separar variable [ Nombre:%dades Separador:| Eliminar base:Apagado ] A8: Establecer variable [ Nombre:%apunts A:%dades(#) Calcular:Apagado Añadir:Apagado ] A9: For [ Variable:%cont Ítems:1:%apunts ] A10: Establecer variable [ Nombre:%planta A:%dades(%cont) Calcular:Apagado Añadir:Apagado ] A11: Separar variable [ Nombre:%planta Separador:; Eliminar base:Apagado ] A12: Establecer variable [ Nombre:%cientific(%cont) A:%planta1 Calcular:Apagado Añadir:Apagado ] A13: Establecer variable [ Nombre:%vulgar(%cont) A:%planta2 Calcular:Apagado Añadir:Apagado ] A14: Establecer variable [ Nombre:%floracio(%cont) A:%planta3 Calcular:Apagado Añadir:Apagado ] A15: Establecer variable [ Nombre:%sol(%cont) A:%planta4 Calcular:Apagado Añadir:Apagado ] A16: Establecer variable [ Nombre:%temperatura(%cont) A:%planta5 Calcular:Apagado Añadir:Apagado ] A17: Establecer variable [ Nombre:%reg(%cont) A:%planta6 Calcular:Apagado Añadir:Apagado ] A18: Establecer variable [ Nombre:%adob(%cont) A:%planta7 Calcular:Apagado Añadir:Apagado ] A19: Establecer variable [ Nombre:%imatge(%cont) A:Pictures/Plantes/%planta8 Calcular:Apagado Añadir:Apagado ] A20: Establecer variable [ Nombre:%link(%cont) A:%planta9 Calcular:Apagado Añadir:Apagado ] A21: Establecer variable [ Nombre:%comentaris(%cont) A:%planta10 Calcular:Apagado Añadir:Apagado ] A22: End For A23: Mostrar Escena [ Nombre:Llistat Cientific Mostrar como:Actividad, Ventana Completa, Sin Título Posición Horizontal:100 Posición Vertical:100 Animación:Sistema Mostrar Botón Salida:Apagado Continuar tarea inmediatamente:Encendido ] A24: Destruir Escena [ Nombre:Espera Plantes Continuar Tarea Tras Error:Encendido ] For (var i=0 ; i=apunts; i++) { var planta = dades(i+1).split(";"); var cientific(i+1) = planta[1] var vulgar(i+1) = planta[2] var floracio(i+1) = planta[3] var sol(i+1) = planta[4] var temperatura(i+1) = planta[5] var reg(i+1) = planta[6] var adob(i+1) = planta[7] var imatge(i+1) = planta[8] var link(i+1) = planta[9] var comentaris(i+1) = planta[10] } Pero me da el error: Uncaught sintax error: Unexpected token ILLEGAL. Lo he probado también substituyendo los (i+1) por [i+1] y tampoco me funciona... Qué hago mal? Última edición por cace0353 Día 12/02/16 a las 13:41:31 |
Gracias de parte de: | ||
|
#20
|
No te dice tasker en qué linea falla? Le puedes meter una variable en el parametro error o marcar "seguir tras error" y usar la variable interna %err.
Otra usar un flash para ir viendo que valor cogen las variables. Enviado desde mi T1-701u mediante Tapatalk |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
Herramientas | |
|
|
Hora actual: 14:24:38 (GMT +2)
HTCMania: líderes desde el 2007