par
AB » 17 mars 2010, 23:49
Pour préciser un peu plus les conséquences de l'explication donnée par
Calimero :
Ton pb venait du fait que quand tu faisais clearInterval(rep) tu n'effaçais que la dernière var rep = setInterval('progressif()', 50) définie
juste avant... mais pas les autres setInterval précédemment lancés dans la boucle
Pour utiliser correctement setInterval dans ce contexte il faudrait ne le lancer qu'une fois, par exemple :
var z = 0;
var rep;
function progressif()
{
if(typeof rep == 'undefined') rep = setInterval('progressif()', 10);
var mydiv = document.getElementById('lediv');
if(mydiv.style.width == '300px')
{
clearInterval(rep);
}
else
{
mydiv.style.width = z + 'px';
mydiv.style.height = z + 'px';
z += 10;
}
}
Enfin bon, on utilise généralement setTimeout qui est plus pratique dans une boucle,
d'ailleurs tu aurais pu ne pas utiiser clearTimeout en faisant simplement :
var z = 0;
function progressif()
{
var mydiv = document.getElementById('lediv');
if(mydiv.style.width != '300px')
{
mydiv.style.width = z + 'px';
mydiv.style.height = z + 'px';
z += 10;
setTimeout('progressif()', 10);
}
}
Pour préciser un peu plus les conséquences de l'explication donnée par [b]Calimero[/b] :
Ton pb venait du fait que quand tu faisais clearInterval(rep) tu n'effaçais que la dernière var rep = setInterval('progressif()', 50) définie [b][i]juste avant[/i][/b]... mais pas les autres setInterval précédemment lancés dans la boucle :)
Pour utiliser correctement setInterval dans ce contexte il faudrait ne le lancer qu'une fois, par exemple :
[html]var z = 0;
var rep;
function progressif()
{
if(typeof rep == 'undefined') rep = setInterval('progressif()', 10);
var mydiv = document.getElementById('lediv');
if(mydiv.style.width == '300px')
{
clearInterval(rep);
}
else
{
mydiv.style.width = z + 'px';
mydiv.style.height = z + 'px';
z += 10;
}
}[/html]
Enfin bon, on utilise généralement setTimeout qui est plus pratique dans une boucle,
d'ailleurs tu aurais pu ne pas utiiser clearTimeout en faisant simplement :
[html]var z = 0;
function progressif()
{
var mydiv = document.getElementById('lediv');
if(mydiv.style.width != '300px')
{
mydiv.style.width = z + 'px';
mydiv.style.height = z + 'px';
z += 10;
setTimeout('progressif()', 10);
}
}
[/html]