JavaScriptで関数の実行を停止する方法|clearTimeout()メソッドの使い方
JavaScriptで関数の実行を停止するには、clearTimeout()メソッドを使用します。このメソッドは、setTimeout()関数によって設定されたタイマーを解除し、まだ実行されていない処理が呼び出されるのをキャンセルします。
clearTimeout()メソッドの基本
setTimeout()は、指定した時間の経過後に関数を一度だけ実行するメソッドで、呼び出し時に一意のタイマーIDを返します。clearTimeout()にこのIDを渡すことで、実行待ちの処理を取り消すことができます。
サンプルコード
以下のコードを実行して、JavaScriptにおけるclearTimeout()メソッドの動作を確認してみましょう。この例では、「Start」ボタンをクリックすると画像が右方向へ移動し続け、「Stop」ボタンをクリックするとアニメーションが停止して画像が初期位置に戻ります。
<html>
<head>
<title>JavaScript clearTimeout() method</title>
<script>
<!--
var imgObj = null;
var animate ;
function init(){
imgObj = document.getElementById('myImage');
imgObj.style.position= 'relative';
imgObj.style.left = '0px';
}
function moveRight(){
imgObj.style.left = parseInt(imgObj.style.left) + 10 + 'px';
animate = setTimeout(moveRight,20); // call moveRight in 20msec
}
function stop(){
clearTimeout(animate);
imgObj.style.left = '0px';
}
window.onload = init;
//-->
</script>
</head>
<body>
<form>
<img id = "myImage" src = "/images/html.gif" />
<p>Click the buttons below to handle animation</p>
<input type = "button" value = "Start" onclick = "moveRight();" />
<input type = "button" value = "Stop" onclick = "stop();" />
</form>
</body>
</html>
コードのポイント
- moveRight()関数:画像を10pxずつ右へ移動させ、20ミリ秒ごとに自分自身を再帰的に呼び出すことで、連続的なアニメーションを実現しています。
- stop()関数:
clearTimeout(animate)でタイマーを解除してアニメーションを停止し、画像の位置を初期値「0px」にリセットします。 - animate変数:
setTimeout()が返すタイマーIDを格納しており、clearTimeout()で停止対象を特定するために不可欠です。
なお、setInterval()で設定した繰り返し処理を停止したい場合は、同じ仕組みを持つclearInterval()メソッドを使用します。用途に応じて両者を使い分けることで、タイマー処理を柔軟に制御できます。
-
JavaScriptでテキストをクリップボードにコピーする方法【サンプルコード付きで解説】
JavaScriptでテキストをクリップボードにコピーするには? Webアプリや管理画面などで、「コピー」ボタンをワンクリックするだけでテキストをクリップボードにコピーできれば、ユーザー体験は大きく向上します。JavaScriptを使えば、この機能はごくシンプルなコードで実装できます。 本記事では、document.execCommand(copy) を使った定番の実装方法を、実際に動作するサンプルコードとともにわかりやすく解説します。 サンプルコード 以下は、入力フィールド内のテキストをボタン一つでクリップボードにコピーする完全なHTMLの例です。 <!DOCTYPE html>
-
JavaScriptで実行中の関数を停止するにはどうすればいい?addEventListenerとclearIntervalの使い方を解説
JavaScriptでは、一度実行が始まった関数を外部から直接強制終了することはできません。しかし、setInterval()で定期実行されている処理であれば、clearInterval()を使うことで停止できます。ボタンのクリックイベントは、document.getElementById().addEventListener()で登録します。 実装のポイント この仕組みを実現するには、以下の手順に従います。 関数を開始するボタン:クリックされるとsetInterval()を呼び出し、戻り値(タイマーID)を変数に保存します。 関数を停止するボタン:クリックされると保存しておいたタイマーID