Solución:
No puede usar un retraso en la función, porque entonces el cambio que realiza en el elemento no se mostrará hasta que salga de la función.
Utilizar el setTimeout
para ejecutar fragmentos de código en un momento posterior:
var s = document.getElementById("div1");
for (i = 0; i < 10; i++) {
// create a closure to preserve the value of "i"
(function(i){
window.setTimeout(function(){
s.innerHTML = s.innerHTML + i.toString();
}, i * 2000);
}(i));
}
var wonderfulFunction = function(i) {
var s = document.getElementById("div1"); //you could pass this element as a parameter as well
i = i || 0;
if(i < 10) {
s.innerHTML = s.innerHTML + i.toString();
i++;
//create a pause of 2 seconds.
setTimeout(function() { wonderfulFunction(i) }, 2000);
}
}
//first call
wonderfulFunction(); //or wonderfulFunction(0);
No puede pausar el código javascript, todo el lenguaje está hecho para trabajar con eventos, la solución que proporcioné le permite ejecutar la función con cierto retraso, pero la ejecución nunca se detiene.
si desea crear una pausa o un retraso en el bucle FOR, el único método real es
while (true) {
if( new Date()-startTime >= 2000) {
break;
}
}
el startTime es el tiempo antes de ejecutar el while, pero este método hará que los navegadores se vuelvan muy lentos
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)