var num = 0;
var max = 10;
var intervalNumber = null;function incrementNumber() {
return function() {
num++;
alert("No");

setTimeout(arguments.callee, 500);
if (num == max) {
clearTimeout(intervalNumber);
alert("Done");
}
}
}var interval = incrementNumber();
intervalNumber = setTimeout(interval, 500);
为什么弹出了Done窗口后还继续弹出No?不是应该Done后就没有了吗?

解决方案 »

  1.   

           
          var test = setTimeout(arguments.callee, 500);
    //alert(arguments.callee)
            if (num == max) {
                clearTimeout(intervalNumber);
      clearTimeout(test);
                alert("Done");
            }这样就停住了
      

  2.   

    楼主只清除了一个带名字的
    setTimeout(arguments.callee, 500);
    这个不带名字没有清除
      

  3.   

      setTimeout(arguments.callee, 500);
            if (num == max) {
                clearTimeout(intervalNumber);
                alert("Done");
            }==》 
            if (num == max) {
                alert("Done");
            }else{
     setTimeout(arguments.callee, 500);
    }
      

  4.   

    Lz居然发了两个贴子??
    var num = 0;
    var max = 10;
    var intervalNumber = null;function incrementNumber() {
        return function() {
            num++;
            alert("No");
            //你之前将setTimeout(arguments.callee, 500);放在这里,不管下面的num==max条件成立与否,都已经执行了呀。你自己仔细想想就清楚了
            if (num == max) {
                alert("Done");
            }else{
                setTimeout(arguments.callee, 500);//你这个调用自身的定时器并没有清除掉
            }
        }
    };
    var interval = incrementNumber();
    intervalNumber = setTimeout(interval, 500);