为了账号安全,请及时绑定邮箱和手机立即绑定

现象:多点击几次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的计数速度不会降低。

最后提出一个问题:一个计时器到预定时间之后,执行了它要调用的操作,它还存在吗?


正在回答

4 回答

总结得很棒,做得时候就感觉不对劲,没想到原因在这里。一个计时器到预定时间之后,执行了它要调用的操作,应该不存在了吧。如果存在的话,第十四行时的母计数器i=setTimeout("startCount()",1000);便找不到对应的返回值了。

1 回复 有任何疑惑可以回复我~

学习了

0 回复 有任何疑惑可以回复我~

看你这么一说,我也发现了,放到dreamweaver里面也是。。。

0 回复 有任何疑惑可以回复我~

自己的一点见解,同时,希望大家看到了讨论一下。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信