Javascript setTimeout не останавливается при вызове clearInterval()

Как остановить таймер, если функция clearInterval() его не останавливает?

Целью этого кода является анимация числа от 0 вверх до конца (например, анимация от 0... 75%). Но таймер не останавливается, когда я вызываю clearInterval():

http://jsfiddle.net/pwYEe/2/

animate("99%", $("#foo")); // doesnt stop animate("75%", $("#bar")); // doesnt stop function loop(clr, clr2, ele, rand, last, delay) { clearInterval(clr); clearInterval(clr2); inloop(clr, clr2, ele, rand, last, delay); if (rand >= last) { clearInterval(clr); clearInterval(clr2); } else { clr2 = setTimeout(function () { loop(clr, clr2, ele, rand, last, delay); }, 2500); } } function inloop(clr, clr2, ele, rand, last, delay) { ele.html((rand += 1) + "%"); if (rand >= last) { clearInterval(clr); clearInterval(clr2); } else { clr = setTimeout(function () { inloop(clr, clr2, ele, rand, last, delay); }, delay); } } function animate(end, display) { var clr = null; var clr2 = null; var ele = null; var rand = 0; // initial number var last = 99; // last number var delay = 5; // inner loop delay ele = display; ele.html("0%"); var idx = end.indexOf("%"); if (idx >=0) { end = end.substring(0,idx); } last = parseInt(end); loop(clr, clr2, ele, rand, last, delay); }

5
задан JK. 17 May 2012 в 00:32
поделиться