Autor
|
Tema: No se incrementa variable global enJavaScript (Leído 4,153 veces)
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola amigos/as como estan?¿ antes que nada desearles una Feliz navidad Bien,a lo que iva,el caso es que tengo una variable global (declarada fuera de las funciones en javascript),y tengo 2 funciones,una que llama a setInterval y este llama a otra fucnion (funcion que teoricamente debe incrementar la variable global,esa variable global es el tiempo del Interval) queda asin: <script lenguage="javascript"> var Contador = 200; var i = 100; function Animate() { var i+=10; Contador+=2; var Objeto = document.getElementById("Imagen"); Objeto.style.width = Contador+'px'; } function Start() { setInterval("Animate()",i); }
la variable "i" no se incrementa,"i" es el tiempo del intervalo,y si se icrementase el intervalo deberia ser mas lasrgo cada vez no?¿ alguna idea? saludos
|
|
« Última modificación: 25 Diciembre 2010, 15:20 pm por Riki_89D »
|
En línea
|
|
|
|
bizco
Desconectado
Mensajes: 698
|
estas declarando 2 variables "i", la que esta fuera de la funcion y la que esta dentro.
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola amigo,dentro de la funcion tambien lo probe sin el "var" osea solo con la "i" pero nada,no incrementa
|
|
|
En línea
|
|
|
|
Spider-Net
Desconectado
Mensajes: 1.165
Un gran poder conlleva una gran responsabilidad
|
La función setInterval el problema que tiene es que creo que la variable con la que la inicialices es el valor que tomará como intervalo constante, y no puede cambiar, creo que podrías hacer eso mismo con SetTimeout(), algo así: <script lenguage="javascript"> var Contador = 200; var i = 100; function Animate(){ i+=100; Contador+=2; document.write(Contador+'px - '+i); Start(); } function Start(){ setTimeout('Animate()', i); } Start(); </script>
Obviamente cambia el document.write por tu función, yo puse el document.write simplemente para probarlo y funciona perfectamente.
|
|
« Última modificación: 25 Diciembre 2010, 16:48 pm por Spider-Net »
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Pero setTimeOut solo se ejecuta una ves no?¿
|
|
|
En línea
|
|
|
|
Spider-Net
Desconectado
Mensajes: 1.165
Un gran poder conlleva una gran responsabilidad
|
Si, pero si pruebas el código que te he puesto verás que hace lo que querías. setTimeout se ejecuta una vez, pero si lo llamas cada vez que ejecutas tu función consigues el efecto que buscabas. Si lo haces con setInterval, el intervalo es constante y no se consigue ese efecto.
|
|
« Última modificación: 26 Diciembre 2010, 15:05 pm por Spider-Net »
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola spider,la verdad si funciona el codigo,i ma so menos hace lo que quiero peor nedesitaria que fuera un pco mas suave la animacion,me esta costando bastante,en otro hilo me dieron un lenace peor no me acabo de enterar mucho,este es el code que tengo acutalmente: <script lenguage="javascript"> var Velocidad = 1; function Animar() { Velocidad+=3; Objeto = document.getElementById("Imagen"); var Ancho = parseInt(Objeto.style.width); Ancho+=21; Objeto.style.width =Ancho+30+'px'; Start_Animate(); } function Start_Animate() { setTimeout("Animar()",Velocidad); } </script>
`pongo un IF tmb para que cuando llege al ancho deseado se pare,pero hay2 cosas que no entiendo,como ago para que el ancho se mueva de ambos lados?¿ es que el ancho siempre se mueve por la parte derecha del DIV nunca pro la izquierda pòr que?¿ i lo otr como pueod hacer para que sea mas suave?¿ saludos
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola de nuevo,bueno ya consegui hacer exactamente el efecto que queria aqui os dejo un pequeño ejemplo que hice,es una tonteria,es mas que nada el efecto que buscava y porfin lo hice: http://webriki.260mb.com/Easyng.htmlpor si a alguien le interesa el codigo aqui se lo dejo,de todas formas abran codigos mucho mas profesionales que el mio eso esta claro. <script lenguage="javascript"> var Incremento = 30; var Tiempo; var Incremento2 = 10; var Tiempo2; function Animar() { Incremento--; if(Incremento == 0) { Start_Animate2(); clearTimeout(Tiempo); } else { Objeto = document.getElementById("Imagen"); var Ancho = parseInt(Objeto.style.width); Objeto.style.width =Ancho+Incremento+'px'; Start_Animate(); } } function Start_Animate() { Tiempo = setTimeout("Animar()",20); } function AnimteHeight() { Incremento2--; if(Incremento2 == 0) { clearTimeout(Tiempo2); } else { Objeto2 = document.getElementById("Imagen"); var Ancho2 = parseInt(Objeto.style.height); Objeto2.style.height =Ancho2+Incremento2+'px'; Start_Animate2(); } } function Start_Animate2() { Tiempo2 = setTimeout("AnimteHeight()",20); } function Cambia() { obj = document.getElementById("Imagen").style.borderColor="white"; document.bgColor="black"; setTimeout("Start_Animate()",500); } </script>
podria aerme ahorrado la creacion de ciertas variables pero bueno eso para cuando lo haga para algun proyecto nada de esto ubiera sido posible sin muchos de aquios lo agradezco amigos saludos y feliz año nuevo
|
|
|
En línea
|
|
|
|
Spider-Net
Desconectado
Mensajes: 1.165
Un gran poder conlleva una gran responsabilidad
|
Antes que nada enhorabuena Riki_89D por el efecto, porque te ha quedado realmente bien, bastante suave y eficaz, lo único que como ya has dicho yo puliría un poco el código para optimizarlo pero enhorabuena porque has conseguido un buen efecto sin usar frameworks.
Por cierto, como consejo, te diría que te acostumbres a identar tu código porque cuando es corto quizás no haya problemas, pero cuando son cada vez más largos tendrás más problemas para encontrar errores y demás, y además, con un código bien tabulado facilitarás la lectura del mismo a otros programadores y a ti mismo en un futuro.
Un saludo.
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Hola Spider-Net,ok tienes razon,pulire el code e intentare ser algo mas organizado xd,bueno lo consegui gracias a bosotro soys los mejores muchisimas gracias pro todo y gracias pro el consejo,creeme que lo seguire siempre hay que aprender de los demas,yo aprendo de bosotros saludos y feliz año a todos/as
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
SMF: $context variable global
PHP
|
[KMT]
|
4
|
3,375
|
2 Enero 2008, 22:02 pm
por [KMT]
|
|
|
variable global
Programación Visual Basic
|
xexio
|
8
|
4,791
|
4 Marzo 2010, 22:12 pm
por xexio
|
|
|
¿Que es preferible? Define o variable global
Programación C/C++
|
Komodo
|
4
|
3,649
|
11 Septiembre 2010, 21:23 pm
por 16BITBoy
|
|
|
[solucionado] Declarar una variable global
« 1 2 »
Programación Visual Basic
|
CAR3S?
|
17
|
10,316
|
25 Abril 2011, 04:23 am
por CAR3S?
|
|
|
Problema con variable 'global'
Programación C/C++
|
xRodak
|
2
|
2,170
|
7 Febrero 2014, 01:23 am
por xRodak
|
|