我复制了关于 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??
}