作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用户可以点击的搜索按钮。
这个搜索按钮调用一个函数。我想避免当用户点击搜索按钮两次或更多次时(因为他认为什么都没有发生),该功能被执行多次。
我正在考虑以某种方式使用 setTimeout(function(){})
并且最后只在按钮的点击距离上次点击至少 3 秒时再次调用搜索函数.
示例:https://jsfiddle.net/n1rcre75/ - 我希望能够连续点击按钮两次(1 秒后),但执行函数只运行一次
有什么想法吗?
最佳答案
守卫搜索:
var button = document.getElementById('search');
var runSearch = true;
button.addEventListener('click', function(evt) {
evt.preventDefault();
if(!runSearch){
return;
}
console.log('do search');
runSearch = false;
setTimeout(function(){
runSearch = true;
}, 3000);
});
或者,如果您不想向作用域引入另一个变量:
document.getElementById('search').addEventListener('click', (function() {
var runSearch = true;
return function(evt) {
evt.preventDefault();
if(!runSearch){
return;
}
runSearch = false;
console.log('do search');
setTimeout(function(){
runSearch = true;
}, 3000);
}
})());
关于javascript - 快速调用后仅调用一次函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29696303/
我是一名优秀的程序员,十分优秀!