Foros del Web » Programando para Internet » Javascript »

Retardar codigo javascript

Estas en el tema de Retardar codigo javascript en el foro de Javascript en Foros del Web. Buenas, espero que alguien pueda ayudarme estoy intentando aprender algo de javascript y me ha surgido una duda que no he sido capaz de solucionar. ...
  #1 (permalink)  
Antiguo 22/02/2013, 15:43
 
Fecha de Ingreso: abril-2009
Mensajes: 356
Antigüedad: 15 años, 8 meses
Puntos: 7
Retardar codigo javascript

Buenas, espero que alguien pueda ayudarme

estoy intentando aprender algo de javascript y me ha surgido una duda que no he sido capaz de solucionar.

De javascript se poco por no decir nada, pero es casi igual que php por lo que me desenvuelvo bastante bien.

Bueno la idea es hacer un bucle que me mueva una capa 50 pixeles a la derecha. He probado con setInterval () y setTimeout () y no se porque no siguen el escript, es como que van a su pedo :)

Código:
<div id="capa"></div>

<script text="text/javascript">

	a = 10;
	
	var Capa = document.getElementById ("capa");
	
	for (a; a > 0; a--) {
		
		window.setTimeout (function () { Capa.innerHTML = a; },1000);
		
	}
	
</script>
este es un código muy basico con el que estoy enredando y la idea es generar un contador regresivo y que cada segundo me muestre en la capa el valor por el que va.

Con timeInterval () no es lo que busco.

Y si es posible, este codigo devera repetirse y cada vez que se repita retrasar todo el script que esta por encima.

No se como explicarlo, pero si alguien me pudiera ayudar se lo agradeceria
__________________
Cannabis; todo sobre el mundo de la marihuana
  #2 (permalink)  
Antiguo 22/02/2013, 16:34
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Retardar codigo javascript

Hola:

Estas lanzando 10 timeout seguidos que se ejecutarán los 10 seguidos dentro de 1000, así que imagino es que lo unico que has conseguido es que todo sea igual de rápido que antes, pero 1000 ms más tarde.

Necesitas setInterval(), pero no en un bucle.

Código java:
Ver original
  1. var miTimer = setInterval (funcion(){Capa.innerHTML=a; a++}, 1000) ;

Cuando quieras que pare, llama a clearInterval(miTimer)

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 22/02/2013, 21:04
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Retardar codigo javascript

Cita:
Iniciado por dvd181191 Ver Mensaje
Buenas, espero que alguien pueda ayudarme

estoy intentando aprender algo de javascript y me ha surgido una duda que no he sido capaz de solucionar.

De javascript se poco por no decir nada, pero es casi igual que php por lo que me desenvuelvo bastante bien.

Bueno la idea es hacer un bucle que me mueva una capa 50 pixeles a la derecha. He probado con setInterval () y setTimeout () y no se porque no siguen el escript, es como que van a su pedo :)

Código:
<div id="capa"></div>

<script text="text/javascript">

	a = 10;
	
	var Capa = document.getElementById ("capa");
	
	for (a; a > 0; a--) {
		
		window.setTimeout (function () { Capa.innerHTML = a; },1000);
		
	}
	
</script>
este es un código muy basico con el que estoy enredando y la idea es generar un contador regresivo y que cada segundo me muestre en la capa el valor por el que va.

Con timeInterval () no es lo que busco.

Y si es posible, este codigo devera repetirse y cada vez que se repita retrasar todo el script que esta por encima.

No se como explicarlo, pero si alguien me pudiera ayudar se lo agradeceria
Bueno, lo de un contador regresivo más o menos se entiende, lo otro, para nada

Para clarificar (aunque ya es más cosa de que te pongas a leer los manuales)
setTimeout retrasa la ejecución n milisegundos
setInterval repite la ejecución cada n milisegundos
si llamás setTiemout dentro de la misma función, llamando a la misma función, también la repite


Ejemplos


Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>timers</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. var i = 10,i2=10,i3=10,t;
  10. function cuenta_reg(){
  11. var capa = document.getElementById('cuenta');
  12. t= setTimeout(function() {
  13.            capa.innerHTML = i;
  14.            i--;
  15.            cuenta_reg(i);
  16.          if(i < 0){
  17.            clearTimeout(t);
  18.            }
  19.        }, 1000);
  20. }
  21.  
  22. function cuenta_reg2(){
  23.     var capa2 = document.getElementById('cuenta2');
  24.     capa2.innerHTML = i2;
  25.          if(i2 == 0){
  26.            clearInterval(e);
  27.            }
  28.            i2--;
  29. }
  30.  
  31. function cuenta_reg3(){
  32.     var capa3 = document.getElementById('cuenta3');
  33.     capa3.innerHTML = i3;
  34.            i3--;
  35.          if(i3 < 0){
  36.             i3 = 10;
  37.            }
  38. }
  39.  
  40. window.onload= function(){
  41. cuenta_reg();
  42. var e = setInterval('cuenta_reg2()',1000);
  43. var f = setInterval('cuenta_reg3()',1000);;
  44. }
  45. //]]>
  46. </head>
  47. <div id="cuenta"></div>
  48. <div id="cuenta2"></div>
  49. <div id="cuenta3"></div>
  50. </body>
  51. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 23/02/2013 a las 09:26
  #4 (permalink)  
Antiguo 25/02/2013, 13:42
 
Fecha de Ingreso: abril-2009
Mensajes: 356
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Retardar codigo javascript

muchas gracias por las respuestas :)
__________________
Cannabis; todo sobre el mundo de la marihuana

Etiquetas: html, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:32.