トッカンソフトウェア

JavaScript 画面操作

今回はタイマーをやります。JavaScriptには、setInterval、setTimeoutという関数が用意されています。

setIntervalは指定時間毎に指定した関数を実行します。実行停止関数(clearInterval)を呼ぶまで何度も実行されます。

setTimeoutは指定時間後に指定した関数を実行します。一回実行したら終わりますが、実行停止関数(clearTimeout)も用意されています。


setInterval

				
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ストップウォッチ</title>
</head>
<body>
	
	<input type="button" id="id1" value="スタート" />
	<input type="button" id="id2" value="クリア" />
	<br />
	<br />
	<input type="text" id="id3" value="経過時間" />秒
</body>
<script type="text/javascript">
	var counter = 0;
	var timer = null;

	// カウンター
	function countup(){
		document.getElementById( "id3" ).value = counter;
		counter++;
	}

	// スタート、ストップボタンが押された時の処理
	document.getElementById( "id1" ).onclick = function(){
		if(timer == null){
			countup();
			timer = setInterval(countup , 1000);
			document.getElementById( "id1" ).value = "ストップ";
		}else{
			clearInterval(timer);
			timer = null;
			document.getElementById( "id1" ).value = "スタート";
		}
	};


	// クリアボタンが押されたときの処理
	document.getElementById( "id2" ).onclick = function(){
		counter = 0;
		document.getElementById( "id3" ).value = counter;
	};

</script>
</html>


			
setIntervalの引数は、setInterval(実行する関数,実行間隔)のようになっています。
実行間隔はミリ秒指定です。上記の例では1000ミリ秒なので1秒間隔になります。

clearInterval関数でタイマー実行を取り消しています。


実行イメージ


スタートボタンを押すと、カウントアップし、もう一度押すと止まります。
クリアボタンを押すとカウントがクリアされます。

setTimeout

				
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>いいねカウンター</title>
</head>
<body>
	
	<input type="button" id="id1" value="いいね" />
	<input type="button" id="id2" value="クリア" />
	<br />
	<br />
	<input type="text" id="id3" value="いいねカウント" />
</body>
<script type="text/javascript">
	var counter = 0;
	var seq = 0;
	var timer = null;

	// カウンター
	function countup(){
		timer = null
		counter++;
		seq--;
		if(seq > 0){
			document.getElementById( "id3" ).value = "カウント中:" + counter;
			timer = setTimeout(countup , 1000);
		}else{
			document.getElementById( "id3" ).value = "カウント完:" + counter;
		}
	}

	// いいねボタンが押された時の処理
	document.getElementById( "id1" ).onclick = function(){
		seq++;
		if(seq == 1){
			timer = setTimeout(countup , 1000);
		}
	};


	// クリアボタンが押されたときの処理
	document.getElementById( "id2" ).onclick = function(){
		counter = 0;
		seq = 0;
		if(timer != null){
			clearTimeout(timer);
			timer = null;
		}
		document.getElementById( "id3" ).value = counter;
	};

</script>
</html>


			
setTimeoutの引数は、setTimeout(実行する関数,実行開始までの時間)のようになっています。
実行開始までの時間はミリ秒指定です。上記の例では1000ミリ秒なので1秒間隔になります。


実行イメージ

いいねボタンを押すとカウントアップしていきます。
クリアボタンを押すとカウントがクリアされます。


無名関数

関数を定義してsetInterval、setTimeoutに渡すのではなく、setInterval、setTimeoutで直接関数を定義することもできます。
				
	timer = setInterval(function () {
		document.getElementById("id3").value = counter;
		counter++;
	}, 1000);

	timer = setTimeout(function () {
		document.getElementById("id3").value = counter;
		counter++;
	}, 1000);

			


ページのトップへ戻る