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

如何避免多次点击造成的加速问题?

在setTimeout中,不断点击start会出现计数加速的情况,请问,如何避免这种情况,以及原理是什么?

正在回答

4 回答

function startCount(){

          clearTimeout(i);

    num=num+1;

    document.getElementById('count').value=num;

    i=setTimeout("startCount()",1000)}

    setTimeout("startCount()",1000);

只要在函数中加入清理定时器就可以,

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

慕用5675268 提问者

意思就是在每一次开始计时之前,把前一次的计时器清理掉是吗?
2016-09-14 回复 有任何疑惑可以回复我~
#2

慕粉3597558 回复 慕用5675268 提问者

对的,这样计时器就不会累加,加速
2016-09-17 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//57c647ed00010fbb05210499.jpg

这是我的代码,思路就是让点击start后不运行计时器,所以通过设一个方法去判断有没有点击过。

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

AcerYyzy

方法不错!
2016-08-31 回复 有任何疑惑可以回复我~
#2

Geeker哞哞

这个不错 ,但是按了stop再点start 计时器就不会运行了;所以还得在stopCount()里加入 u=0;
2016-09-22 回复 有任何疑惑可以回复我~

点对应个stop

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

慕用5675268 提问者

机灵抖的不错,哈哈
2016-08-31 回复 有任何疑惑可以回复我~

你每次点击start就执行startCount()函数,里面的setTimeout("startCount()",1000);是每一秒就执行一次,你不断点击,计数是在1000ms结束后才计数 setTimeout就不断累积,看上起就像加速了停不下来一样。

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

慕用5675268 提问者

恩,是这个道理,解决了第一个问题,那么,如何避免这种情况呢。
2016-08-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

如何避免多次点击造成的加速问题?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信