ボタンとかを押して何秒か後に実行したい場合にsetTimeout使う場合ありますよね。
いったんclearTimeoutで、setTimeoutメソッドの処理を停止して、連続でボタンをクリックされたときの対策ができます
See the Pen setTimeoutでボタン連打されたときの対策 by takapen (@takapen) on CodePen.
ボタン01
ボタン02
.btn { margin: 20px; padding: 20px; display: inline-block; cursor: pointer; } #btn01 { background: #27b5ec; } #btn02 { background: #c9d210; }
// やばい $('#btn01').on('click',function(){ setTimeout(function(){ console.log('連打されるとやばい'); }, 1000); }); // だいじょぶ var timeoutId; $('#btn02').on('click',function(){ clearTimeout(timeoutId); timeoutId = setTimeout(function(){ console.log('連打されても1回だけなので安心'); }, 1000); });