一度押したボタンを一定時間使えなくするスクリプト

簡単な機能だし、実装しているサイトはたくさんある。のだけど、イマイチ理解できてなかった。「指定した時間ごとに関数を呼び出す」というヘンチクリンなsetInterval関数とそれの解除の組み合わせ方が肝だったのだと分かりました。

http://hiropon.sub.jp/ajax/0208-1.html


function btnDisable(){ //①
document.getElementById("btn").disabled = true;
clearInterval(statusDis);
}

function btnAble(){ //②
document.getElementById("btn").disabled = false;
clearInterval(statusAble);
}


function clicked(){ //① + ②
statusDis = setInterval(btnDisable , 1); //ボタンを押した直後に①を呼び出し
statusAble = setInterval(btnAble , 3000); //ボタンを押して三秒後に②を呼び出し
}

  • disabledをtrueにする関数①と、disabledをfalseにする関数②を二つ用意しておく
  • それぞれの関数内に自身の解除に使うclearIntervalを突っ込んでおく。
  • ①と②をセットにした関数を容易
  • 時間差で起動するようにする
  • これで「○秒間」だけボタンを使えなくするスクリプトができた
  • clearIntervalをセットしておかないと、いつまでも関数が呼ばれ続けるので注意