window.setInterval

« DOM リファレンス

概要

一定の遅延間隔を置いて関数を繰り返し呼び出します。

構文

intervalID = window.setInterval(func, delay[, param1, param2, ...]);
intervalID = window.setInterval(code, delay);

ここで、

  • intervalIDclearInterval に渡すことのできる固有のインターバル ID です。
  • func は繰り返し呼びたい関数です。
  • もう一つの構文の code は、繰り返し呼び出したいソースコードの文字列です。
  • delay は、setInterval()funcを呼び出す前に待つべきミリ秒数(1/1000 秒) です。

最初の構文で関数にパラメータを付加したものは、Internet Explorer では動作しないので注意してください。

var intervalID = window.setInterval(animate, 500);

以下の例では Stop ボタンを押して intervalID をクリアするまで flashtext() 関数が 1 秒に 1 回呼び出されつづけます。

<html>
<head>
<title>setInterval/clearInterval example</title>

<script type="text/javascript">
var intervalID;

function changeColor()
{
  intervalID = setInterval(flashText, 1000);
}

function flashText()
{
  var elem = document.getElementById("my_box");
  if (elem.style.color == 'red')
  {
    elem.style.color = 'blue';
  }
  else
  {
    elem.style.color = 'red';
  }
}

function stopTextColor()
{
  clearInterval(intervalID);
}
</script>
</head>

<body onload="changeColor();">
<div id="my_box">
<p>Hello World</p>
</div>
<button onclick="stopTextColor();">Stop</button>
</body>
</html>

注記

setInterval() 関数は一般に、アニメーションのように何度も実行される関数に遅延をセットするのに使われます。

window.clearInterval() を使ってインターバルをキャンセルすることができます。

もしあなたの関数を指定時間後に 一度 だけ呼び出したい場合には、window.setTimeout() を使います。

コールバックの引数

setInterval() は指定ミリ秒に呼び出されたコールバックをコールバック関数に引き渡しますが、もしそれが引数のように他のものを期待している場合、それを混同する可能性があります。この問題を回避するためには、コールバックを呼び出すために無名関数を使用してください。

コールバック関数に引数を渡す必要があり、それを setInterval() で追加の引数の指定をサポートしない Internet Explorer でも動作するようにさせる必要がある場合にも、同じテクニックを使うことができます。

例:

intervalID = setInterval(function() { funcflashText(); }, 1000);

'this' 問題

setInterval() (もっと言うと他のどんな関数でも) にメソッドを渡すと、間違った this の値で呼び出されることがあります。この問題は JavaScript リファレンスで詳しく説明されています。

仕様

DOM Level 0。どの標準にも属しません。

Document Tags and Contributors

Contributors to this page: Taken, ethertank, Hfjapancom, Marsf, Shoot, Ceth, Mgjbot, Potappo, Okome
最終更新者: ethertank,