0

setInterval() に関する Mozilla ドキュメントにある例 #2 をコピーしました ( https://developer.mozilla.org/en-US/docs/Web/API/window.setInterval?redirectlocale=en-US&redirectslug=DOM%2Fwindow. setInterval#Example_1.3A_Generic ) しかし、私の JSFiddle ではテキストの色が赤と青の間で交互になりません:

デモ: http://jsfiddle.net/lpsternotes/JHpt9/

jQuery が必要なためでも、マークアップのためでもありません。私はそれを正確にコピーしました。

また、明確化のためにお願いしたいと思いました。理由は var nIntervId; です。上部のグローバル変数として定義されているのは、changeColor() 関数と stopTextColor() 関数の両方で使用できるようにするためですよね?

var nIntervId; //global variable

function changeColor() {
  nIntervId = setInterval(flashText, 500);
 }

function flashText() {
  var oElem = document.getElementById("my_box");
  oElem.style.color = oElem.style.color == "red" ? "blue" : "red";
}

function stopTextColor() {
  clearInterval(nIntervId);
}

つまり、コードが次のようになっているとします。

function changeColor() {
  var nIntervId = setInterval(flashText, 500);
}

function flashText() {
  var oElem = document.getElementById("my_box");
  oElem.style.color = oElem.style.color == "red" ? "blue" : "red";
}

function stopTextColor() {
  clearInterval(nIntervId); //undefined??
}
4

2 に答える 2

1

関数は別の関数内で定義されます (実行されonLoadます) (左側の JSFiddle オプションの 2 番目のドロップダウン メニューに従って)。

これは、それらがその関数にスコープされ、グローバルではないことを意味します。

したがって、それらはonload="stopTextColor();"属性の範囲外です。

属性stopTextColor()を使用して作成した別の onload ハンドラーではなく、既存の onload ハンドラーを呼び出すだけです。onload

于 2013-09-29T16:24:45.707 に答える