建筑工程教育网官方网站,设计网站公司顶尖y湖南岚鸿牛x,外外贸网站推广方案,关键词搜索排名软件在上述例子中#xff0c;本应每1秒输出一次#xff0c;但在多次点击按钮后会变成每0.9秒、0.8秒、0.7秒… 就输出一次#xff0c;即定时器时间间隔越来越短#xff0c;这就是所谓的定时器越走越快。 其实原因很简单#xff0c;在多次点击按钮时#xff0c;多次创建了定时…
在上述例子中本应每1秒输出一次但在多次点击按钮后会变成每0.9秒、0.8秒、0.7秒… 就输出一次即定时器时间间隔越来越短这就是所谓的定时器越走越快。 其实原因很简单在多次点击按钮时多次创建了定时器所以明面上看是“定时器越走越快”其实是“多次初始化定时器”。 所以并不是定时器越走越快而是有多个定时器在执行定时器里面的程序执行的频率提高了。 方式一因为问题出现在“多次初始化定时器”那就要在每次初始化定时器之前先执行清除操作保证只有一个定时器在执行就不会出现这样的问题了。
var timer null;btn.onclickfunction(){if(timer){clearInterval(timer)timer null}timer setInterval(function(){s--time.innerTexts},1000);} ●setInterval() 会执行多次 ●setTimeout() 只会执行一次 方式二添加一个开关,让这个开关默认为true第一次点击将其变为false点击事件的执行需要判断这个开关是否为true为true执行false不执行。 解决多次点击问题定时器执行完毕之后再继续执行下一个定时器。
let btn document.querySelector(button);var time;var fls truebtn.addEventListener(click, function() {if (fls){fls falsetime setInterval(function() {console.log(1s)}, 1000)}})