【发布时间】:2022-01-08 21:28:34
【问题描述】:
我在带有一些 CSS 样式的 HTML 文档中附加了以下 Javascript 代码。
它只是屏幕上的一个框,它根据数组中看到的更改样式背景属性颜色。 "color-changer" 的 id 用于访问 HTML 文档,并在每次迭代数组时更改它。
函数声明changeColour(); 用于通过使用colours.length 计算其在数组中的路径,然后将数组值放入HTML 中,HTML 每3 秒更改一次背景颜色。
一旦到达数组的末尾,计数器将重置为 0,并再次继续。
setInterval 方法每 3 秒调用一次回调方法changeColour() 来实现这一点。
为了停止循环,添加了一个 onclick is 事件,该事件调用clearInterval() 方法在框中打印出“计时器停止”。为此,setInterval() 方法必须存储在变量 myTimer 中。
请参阅下面的代码。一切正常,但这不是我真正的问题。
let colourChanger = document.getElementById ("colour-changer");
let colours = ["red","blue","green","pink"];
let counter = 0;
function changeColour(){
if (counter >= colours.length){
counter = 0;
}
colourChanger.style.background = colours[counter];
counter++;
}
let myTimer = setInterval(changeColour, 3000);
colourChanger.onclick = function (){
clearInterval(myTimer);
colourChanger.innerHTML = "Timer stopped";
}
我无法理解的是let myTimer = setInterval(changeColour, 3000);这一行
据我了解,如果您将函数存储在变量中,除非单独调用,否则它将不会执行。它只是存储在变量myTimer 中。
在变量之外的任何地方都没有调用setInterval();。
我的问题:
既然这个方法只是存储在变量myTimer中,那么如何调用它呢?
【问题讨论】:
-
方法没有存储在变量里面。该方法的返回是;在这种情况下,
setInterval返回该间隔的数字标识符,然后可用于清除该间隔(在 onclick 中完成)。这可以通过阅读the documentation来实现。 -
setInterval 该方法返回唯一标识区间的区间ID
-
作为最后一个问题。
let myTimer = setInterval(changeColour, 3000);还是函数表达式吗?或者它被归类为其他东西?
标签: javascript function variables invocation