Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Riki_89D en 25 Diciembre 2010, 15:18 pm



Título: No se incrementa variable global enJavaScript
Publicado por: Riki_89D en 25 Diciembre 2010, 15:18 pm
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:

Código
  1. <script lenguage="javascript">
  2. var Contador = 200;
  3. var i = 100;
  4. function Animate()
  5. {
  6. var i+=10;
  7. Contador+=2;
  8. var Objeto = document.getElementById("Imagen");
  9. Objeto.style.width = Contador+'px';
  10.  
  11. }
  12. function Start()
  13. {
  14. setInterval("Animate()",i);
  15.  
  16. }
  17.  

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 :D


Título: Re: No se incrementa variable global enJavaScript
Publicado por: bizco en 25 Diciembre 2010, 15:27 pm
estas declarando 2 variables "i", la que esta fuera de la funcion y la que esta dentro.


Título: Re: No se incrementa variable global enJavaScript
Publicado por: Riki_89D en 25 Diciembre 2010, 15:48 pm
Hola amigo,dentro de la funcion tambien lo probe sin el "var" osea solo con la "i" pero nada,no incrementa


Título: Re: No se incrementa variable global enJavaScript
Publicado por: Spider-Net en 25 Diciembre 2010, 16:46 pm
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í:

Código
  1. <script lenguage="javascript">
  2. var Contador = 200;
  3. var i = 100;
  4.  
  5. function Animate(){
  6. i+=100;
  7. Contador+=2;
  8. document.write(Contador+'px - '+i);
  9. Start();
  10. }
  11.  
  12. function Start(){
  13. setTimeout('Animate()', i);
  14. }
  15.  
  16. Start();
  17. </script>

Obviamente cambia el document.write por tu función, yo puse el document.write simplemente para probarlo y funciona perfectamente.


Título: Re: No se incrementa variable global enJavaScript
Publicado por: Riki_89D en 25 Diciembre 2010, 17:49 pm
Pero setTimeOut solo se ejecuta una ves no?¿


Título: Re: No se incrementa variable global enJavaScript
Publicado por: Spider-Net en 25 Diciembre 2010, 19:27 pm
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.


Título: Re: No se incrementa variable global enJavaScript
Publicado por: Riki_89D en 26 Diciembre 2010, 17:09 pm
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:
Código
  1. <script lenguage="javascript">
  2. var Velocidad = 1;
  3.  
  4. function Animar()
  5. {
  6. Velocidad+=3;
  7. Objeto = document.getElementById("Imagen");
  8. var Ancho = parseInt(Objeto.style.width);
  9. Ancho+=21;
  10. Objeto.style.width =Ancho+30+'px';
  11. Start_Animate();
  12. }
  13.  
  14. function Start_Animate()
  15. {
  16. setTimeout("Animar()",Velocidad);
  17. }
  18.  
  19. </script>
  20.  


`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


Título: Re: No se incrementa variable global enJavaScript
Publicado por: Riki_89D en 26 Diciembre 2010, 22:57 pm
Hola de nuevo,bueno ya consegui hacer exactamente el efecto que queria :D

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.html (http://webriki.260mb.com/Easyng.html)

por 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.

Código
  1. <script lenguage="javascript">
  2. var Incremento = 30;
  3. var Tiempo;
  4. var Incremento2 = 10;
  5. var Tiempo2;
  6. function Animar()
  7. {
  8. Incremento--;
  9. if(Incremento == 0)
  10. {
  11. Start_Animate2();
  12. clearTimeout(Tiempo);
  13. }
  14. else
  15. {
  16. Objeto = document.getElementById("Imagen");
  17. var Ancho = parseInt(Objeto.style.width);
  18. Objeto.style.width =Ancho+Incremento+'px';
  19. Start_Animate();
  20. }
  21. }
  22.  
  23. function Start_Animate()
  24. {
  25. Tiempo = setTimeout("Animar()",20);
  26. }
  27.  
  28.  
  29.  
  30.  
  31.  
  32. function AnimteHeight()
  33. {
  34. Incremento2--;
  35. if(Incremento2 == 0)
  36. {
  37. clearTimeout(Tiempo2);
  38. }
  39. else
  40. {
  41. Objeto2 = document.getElementById("Imagen");
  42. var Ancho2 = parseInt(Objeto.style.height);
  43. Objeto2.style.height =Ancho2+Incremento2+'px';
  44. Start_Animate2();
  45. }
  46. }
  47.  
  48.  
  49. function Start_Animate2()
  50. {
  51. Tiempo2 = setTimeout("AnimteHeight()",20);
  52. }
  53. function Cambia()
  54. {
  55. obj = document.getElementById("Imagen").style.borderColor="white";
  56. document.bgColor="black";
  57. setTimeout("Start_Animate()",500);
  58. }
  59.  
  60. </script>
  61.  

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 :)



Título: Re: No se incrementa variable global enJavaScript
Publicado por: Spider-Net en 27 Diciembre 2010, 14:48 pm
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.


Título: Re: No se incrementa variable global enJavaScript
Publicado por: Riki_89D en 27 Diciembre 2010, 14:52 pm
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 :D siempre hay que aprender de los demas,yo aprendo de bosotros :)


saludos y feliz año a todos/as