javascript - 为什么如果单击按钮两次 setInterval 方法比声明的更短
问题描述
我想用 setInterval 方法每秒执行一次函数 FindNext() 。如果我单击按钮一次效果很好,但是如果我单击按钮两次或更多次,则间隔开始更短然后声明 - 短于一秒。我不知道如何使时间间隔独立于按钮单击次数?
<button id="search-next">Find - next</button>
$('#search-next').click(function() {
setInterval(function() {
FindNext();
}, 1000);
});
解决方案
不是更短。您只需运行多个计时器。
你可以做这样的事情来检查是否已经有一个计时器在运行:
var myTimer = null;
$('#search-next').click(function() {
if (myTimer === null) {
myTimer = setInterval(function() {
FindNext();
}, 1000);
}
});
或者在启动新计时器之前使用 clearInterval :
var myTimer = null;
$('#search-next').click(function() {
if (myTimer !== null) {
clearInterval(myTimer);
}
myTimer = setInterval(function() {
FindNext();
}, 1000);
});
推荐阅读
- java - EntityManager 没有被 Guice 注入
- amazon-web-services - Obtaining a deployed API Gateway URL using awscli
- jquery - 允许用户使用 jquery 在输入文本字段中输入美元符号、逗号和数字
- javascript - 如何在 JS 中创建 WebAssembly.Memory,然后在 C 中访问它?
- mysql - Drupal 想要在将 Drupal 站点复制到子域后安装
- java - 使用超级账本结构 java sdk 获取块信息
- javascript - 如何将 PHP 数据发送到 Laravel 中的 Javascript 文件(谷歌地图 API)
- google-chrome-extension - 添加“match_about_blank”会触发权限警告吗?
- python - Issue while adding many to one relationship with Flask, SQLAlchemy
- android-source - Do Android init property triggers always happen on boot and if so when exactly?