Foros del Web » Programando para Internet » Javascript »

Pq va tan rápido ¿?

Estas en el tema de Pq va tan rápido ¿? en el foro de Javascript en Foros del Web. Hola a todos. Me está pasando algo curioso y no entiendo por qué. El caso es que me he creado un escrip que cada vez ...
  #1 (permalink)  
Antiguo 04/06/2004, 14:39
 
Fecha de Ingreso: mayo-2004
Ubicación: Canarias
Mensajes: 17
Antigüedad: 20 años, 6 meses
Puntos: 0
Pq va tan rápido ¿?

Hola a todos. Me está pasando algo curioso y no entiendo por qué. El caso es que me he creado un escrip que cada vez que se pasa el cursor por una imágen midifique el texto insertado en una capa y ponga el título de la imagen correspondiente. El texto se debe ir mostrando poco a poco, pero después de haberse mostrado un par de veces, lo va haciendo cada vez más rápido. Este es el código:
<script language="JavaScript">
var capa_glob;
var txt_glob;
function escribe(capa,txt){
document.all[capa].innerHTML = "<font color='#ff0000'></fotn>";
capa_glob = capa;
txt_glob = txt;
setTimeout("escribe2(capa_glob,txt_glob)",500);
}
function escribe2(capa,txt){
if (txt == ""){
var aux_long = document.all[capa].innerHTML.length;
var aux_text = document.all[capa].innerHTML;
txt = aux_text.substring(20,aux_long-7);
document.all[capa].innerHTML = "<font color='#ff0000'></fotn>";
setTimeout("escribe2(capa_glob,txt_glob)",3000);
}
document.all[capa].innerHTML = document.all[capa].innerHTML.substring(0,document.all[capa].innerHTML.length-7) + txt.substring(0,1) + '</font>';
txt = txt.substring(1,txt.length);
capa_glob = capa;
txt_glob = txt;
setTimeout("escribe2(capa_glob,txt_glob)",500);
}
</script>

también uso un setTimeout en otra función que cambia el title de la página, por si eso influyera.

Muchas gracias!!
  #2 (permalink)  
Antiguo 05/06/2004, 03:13
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 23 años, 3 meses
Puntos: 381
Prueba a guardar el setTimeout dentro de una variable. Así cuando se vuelva a llamar se sobre-escribe el valor de la variable y no guarda si se ha hecho una llamada anterior.

Básicamente lo que te está sucediendo es que en cada llamada al setTimeout se va sumando a la llamada anterior y al final tienes muchas llamadas simulatenas.

prueba a pedirle nombreVariable=setTimeout("loquesea",500)
  #3 (permalink)  
Antiguo 05/06/2004, 14:51
 
Fecha de Ingreso: mayo-2004
Ubicación: Canarias
Mensajes: 17
Antigüedad: 20 años, 6 meses
Puntos: 0
Gracias, pero ya he probado eso y sigue igual... ¿?¿?
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 18:37.