现象:多点击几次Start之后,会出现计数加快的情况,然后每点击一次Stop,计数速度就会降低一点点
解释:num,i在脚本里面都是全局变量,每点击一次start,就重新开了一个计数器循环,到时间后就会对num进行加,多开几个计数器,就相当于同时在多个线程里执行num加的操作,所以在原来的周期时间内,num就会多加几次,体现在现象上就是文本框内部的数字多跳变几次。
然后讨论i的情况。在只点击一次Start时,即每次只有一个计数器技术时,当它的计数周期到了之后,执行 startCount()函数,再开一个新的计数器,i=setTimeout("startCount()",5000),此时i就由上一个母计数器的ID变为了下一个子计数器的ID,所以,其实i一直只是一个计数器的ID。
在点击多次Start之后,每次就有多个计数器在运行,每当一个母计数器到时间后,执行startCount函数,然后i就是向它的子计数器的ID,然后另外一个母计数器到时间后,i又指向了这个母计数器的子计数器,所以,每次i只指向一个计数器,同时还有其它计数器也在计数,但是其id都没有保存在一个变量中,所以,点击一次Stop之后,就会关闭i指向的那个计数器,然后某个计数器到时间,i又指向其子计数器,然后再点击Stop,又会关掉这个子计数器。现在讨论一种现象:点击Stop,关掉i指向的那个计数器,然后迅速的再点击Stop,如果在这中间的短的时间内,还没有任何一个母计数器到时间,也就是说,i还没有来得及指向下一个子计数器,那么,这次点击Stop是无效的,num的计数速度不会降低。
最后提出一个问题:一个计时器到预定时间之后,执行了它要调用的操作,它还存在吗?