js timeInterval setInterval无法用clearInterval停止的问题
其实这个问题本身是由于js定时器特性产生的。 clearInterval是根据定时器本身的标识来进行清除的,如果在期间生成了新的interval,并覆盖timer标识对象,旧有的timer定时器对象并不会被停止和清除,而且标识也会丢失导致再也无法被清除,所以写定时器时一定要注意。 下面是一个正确范例: 1 var ajaxObj = null ; //ajax异步加载的对象 2 var timer = null ; 3 4 loadTimerWhenSthIsReady ( params1 ); 5 6 ///param是外部参数,这里仅是举例 7 function loadTimerWhenSthIsReady ( params ) { 8 //一定要先清掉之前的定时器,如果出现两次调用的情况可能导致生成两个定时器。 9 //因为timer本身只是定时器标记并不是定时器对象,所以覆盖并不会让timer停止,旧的timer会一直执行停不下来 10 clearInterval ( timer ); 11 timer = null ; 12 13 timer = setInterval ( function () { 14 if ( ajaxObj != null ) { 15 clearInterval ( timer ); 16 timer = null ; 17 /